编辑
再想一想,对于 MERGE 请求,JayData 中似乎仍有一些问题。
这不是 CORS,与它无关!
请参阅带有自定义标头的 JayData oData 请求 - 第 2 轮
波纹管“hack”有效,但上述问题应该将这个问题提升到一个新的水平。
----------
旧答案
没关系,我找到了解决方案。
prepareRequest
JayData 1.3.2 (ODataProvider)似乎坏了。
作为 hack,我在 providerConfiguration (oDataProvider.js) 中添加了一个 extraHeaders 对象:
this.providerConfiguration = $data.typeSystem.extend({
//Leave content unchanged and add the following:
extraHeaders: {}
}, cfg);
然后在第 865 行修改 requestData,如下所示:
var requestData = [
{
requestUri: this.providerConfiguration.oDataServiceHost + sql.queryText,
method: sql.method,
data: sql.postData,
headers: _.extend({
MaxDataServiceVersion: this.providerConfiguration.maxDataServiceVersion
},this.providerConfiguration.extraHeaders)
},
注意:我使用 lodash 是为了方便,任何 js 扩展都可以解决问题。
然后你只需像这样创建你的客户端:
var entities = new Entities.MyEntities({
name: 'oData',
oDataServiceHost: 'http://myhost.com/DataService.svc',
maxDataServiceVersion: "2.0",
//enableJSONP: true,
extraHeaders: {apikey:'f05d1c1e-b1b9-5a2d-2f44-da811bd50bd5', Accept:'application/json;odata=verbose'}
}
);