2

我可以使用标准的 jquery ajax 调用访问我的 web api 服务:

$.ajax('http://service/method', {
contentType: 'application/json',
type: 'GET',
xhrFields: {
    withCredentials: true
  }
})

在服务器端,webconfig 文件配置如下:

 <customHeaders>
    <clear/>
    <add name="Access-Control-Allow-Methods" value="POST,GET,OPTIONS" />
    <add name="Access-Control-Allow-Origin" value="http://localhost:1502" />
    <add name="Access-Control-Allow-Headers" value="Content-Type,X-Requested-With, Authorization" />
    <add name="Access-Control-Allow-Credentials" value="true" />
  </customHeaders>

目前,我正在尝试从运行在端口 1502 上的本地网站访问该服务。

但是,在使用轻风时,我看不到如何指定 withCredential 参数,结果出现 401 错误。

4

2 回答 2

4

看看微风“ajax 适配器”。以下方法将为每个 Breeze XHR 请求添加“withCredentials”。

// 获取当前默认的 Breeze AJAX 适配器
var ajaxAdapter = 微风.config.getAdapterInstance("ajax");
// 将 'withCredentials' 合并到 Breeze 传递给 jQuery.ajax 方法的设置中
ajaxAdapter.defaultSettings = {
      xhr字段:{
          withCredentials: 真
      }
};

如果您需要有条件地将此(或其他信息)添加到请求中(例如,对于某些 URL 而不是其他 URL),您可以制作一个更聪明的适配器。

于 2013-06-25T16:48:14.410 回答
0

我尝试了上述方法,但它似乎从 BreezeJS 1.6.3 开始不起作用。

但是,我只需稍作改动就能让它工作。这是我的工作代码:

// set credentials on
var ajaxAdapter = breeze.config.getAdapterInstance('ajax');
ajaxAdapter.defaultSettings = {
    withCredentials: true
};
于 2017-03-31T15:12:43.130 回答