我们最近将一个API应用程序从Azure云服务迁移到Azure网站,一些客户端仍在使用我们的旧协议进行身份验证,该协议使用cookie(而不是通常的Authorization: BearerHTTP标头).我们需要支持此身份验证协议一段时间,因为客户端无法立即迁移.
为了支持针对API的跨源ajax请求中的cookie,客户端需要将设置withCredentials设置为trueXMLHttpRequest,并且服务器需要使用Access-Control-Allow-Credentials标头以及任何CORS请求进行响应.
我们面临的问题是Azure网站自己管理CORS,并使用自己的配置(限于允许的来源列表)作为响应,这不允许设置此标头...从而打破了申请我们所有的Ajax客户端!
有没有办法(临时)在响应中添加此标头?
我有一个 Owin WebAPI2 .NET 应用程序,它托管在 Azure 的 AppService 上。
我想使用 Azure 添加 CORS 支持,如本文所述。看起来很简单,您只需将一个 Origin 站点添加到列表中,如下所示:http : //screencast.com/t/r2ATq4u5
我现在希望 Response 标头包含这个允许的 Origin。
但是,当我使用 Fiddler 进行检查时,响应标头中不包含 CORS 标头:http : //corstestqm.azurewebsites.net/breeze/restaurantsbreeze/basictest
我尝试过的步骤:
这些都没有任何影响。(即响应不包含 Azure 中指定的 CORS 标头)。
我在这里错过了一些非常基本的东西吗?
更新 我进一步简化了问题:在 VS2015 中,我创建了一个新的 API 项目并将其推送到http://corstestbasicap2.azurewebsites.net/api/values/ 没有任何更改(即它不应该启用 CORS)。
然后我使用Test-Cors 工具来访问该 API。它没有像预期的那样出现 CORS 错误。然后我进入 Azure 并添加一个虚拟 URL(例如http://www.example.com)并再次尝试 CORS 测试。它应该会失败,因为 Azure 应该只让 example.com …