向ODATA服务器发出请求时,向breeze中的请求添加头

向ODATA服务器发出请求时,向breeze中的请求添加头,odata,breeze,Odata,Breeze,我正在创建一个应用程序。我的服务器是ODATA服务器,我在客户端使用breeze。谁能告诉我在向服务器发出请求之前如何添加头breeze.config.getAdapterInstance(“ajax”)对我不起作用 var ajaxAdapter=breeze.config.getAdapterInstance('ajax');/,'角的(真的); ajaxAdapter.defaultSettings={ 标题:{“Auth”:“我不是黑客”}, }; initializedapternin

我正在创建一个应用程序。我的服务器是ODATA服务器,我在客户端使用breeze。谁能告诉我在向服务器发出请求之前如何添加头
breeze.config.getAdapterInstance(“ajax”)
对我不起作用


var ajaxAdapter=breeze.config.getAdapterInstance('ajax');/,'角的(真的);
ajaxAdapter.defaultSettings={
标题:{“Auth”:“我不是黑客”},
};
initializedapterninstances({dataService:“webApiOData”});

WebApioDataDataService适配器不使用在Breeze中配置的ajax适配器,因此向ajax适配器添加默认头不起作用。您将不得不配置datajs。看


我遇到了类似的问题,并找到了以下解决方案:

.run(['appConfig', 'breeze', '$http', function (appConfig, breeze, $http) {
        $http.defaults.headers.common[appConfig.antiForgeryCookieName] = appConfig.aftoken;
        var adapter = (breeze.config.initializeAdapterInstance('dataService', 'webApiOData', true));
        adapter.headers[appConfig.antiForgeryCookieName] = appConfig.aftoken;
    }

很抱歉,获取适配器实例不足以添加头-您能添加到目前为止尝试的代码吗?如果没有,那么只需检查文档,它将向您展示there.var ajaxAdapter=breeze.config.getAdapterInstance('ajax');/,'角的(真的);ajaxAdapter.defaultSettings={headers:{“Auth”:“我不是黑客”},};initializedapterninstances({dataService:“webApiOData”});我认为我在错误的适配器中添加了标题。这就是为什么我想知道breeze中是否有任何适配器可用于发出ODATA请求。顺便问一下,您在谈论哪些文档。。我已经搜索了很多,但是没有找到任何相关的。谢谢你的回复。我现在正在使用下面的代码-var oldClient=OData.defaultHttpClient;var myClient={request:function(request,success,error){request.headers.Authorization=$http.defaults.headers.common['Authorization'];返回oldClient.request(request,success,error);};OData.defaultHttpClient=myClient;initializedapterninstances({dataService:“ODATA”});它不再攻击服务器。。我也尝试过dataService WebApiOData,但没有成功。只是想知道adapter.changeRequestInterceptor是否可以工作。。是否可以使用adapter.changeRequestInterceptor在dataService适配器中进行更改,并将其配置为ODATA服务器?谢谢,Joe。我已经用类似的建议更新了上的Breeze文档。Breeze OData适配器确实支持
changeRequestInterceptor
,它在Breeze层而不是AJAX级别上运行。这是处理$batch请求内部细节的正确拦截器。您的示例中的授权标头属于外部$batch请求,这是
changeRequestInterceptor
无法触及的。因此,您需要对DataJS
OData
组件进行调整,如下所述。。你能告诉我如何获取breeze生成的URL吗?我使用的代码是:-var query=breeze.EntityQuery.from(“合作伙伴”);manager.executeQuery(查询,函数(数据){var results=data.results;……}
.run(['appConfig', 'breeze', '$http', function (appConfig, breeze, $http) {
        $http.defaults.headers.common[appConfig.antiForgeryCookieName] = appConfig.aftoken;
        var adapter = (breeze.config.initializeAdapterInstance('dataService', 'webApiOData', true));
        adapter.headers[appConfig.antiForgeryCookieName] = appConfig.aftoken;
    }