breezejs:为CORS配置服务

时间:2013-06-24 10:59:23

标签: cors breeze

我可以使用标准的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上运行的本地网站上获取服务。

然而,当使用breeze时,我看不出如何指定withCredential参数,因此我得到401错误。

2 个答案:

答案 0 :(得分:4)

查看Breeze "ajax adapter"。以下方法将为每个Breeze XHR请求添加“withCredentials”。

// get the current default Breeze AJAX adapter
var ajaxAdapter = breeze.config.getAdapterInstance("ajax");
// merge 'withCredentials' into the settings Breeze passes to the jQuery.ajax method
ajaxAdapter.defaultSettings = {
      xhrFields: {
          withCredentials: true
      }
};

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

答案 1 :(得分:0)

我尝试了上面的方法,它似乎没有像BreezeJS 1.6.3那样工作。

但是,我能够稍微改变它。这是我的工作代码:

OBJ.._Hello_Hello.o