小编典典

在Azure网站(Azure App Services)中启用Access-Control-Allow-Credentials标头

ajax

我们最近将API应用程序从Azure云服务迁移到Azure网站,并且一些客户端仍在使用我们的旧协议进行身份验证,该协议使用cookie(而不是通常的Authorization: BearerHTTP标头)。我们需要支持此身份验证协议一段时间,因为客户端将无法立即迁移。

为了在指向API的跨域ajax请求中支持cookie,客户端需要在XMLHttpRequest
中将withCredentials设置设置为true,服务器需要对Access-Control-Allow- Credentials标头以及任何CORS请求进行响应。

我们面临的问题是,Azure网站完全自己管理CORS,并使用其自己的配置(仅限于允许的来源列表)进行响应,这不允许设置此标头…从而破坏了我们所有Ajax客户的应用程序!

有没有办法(在响应中)临时添加此标头?


阅读 234

收藏
2020-07-26

共1个答案

小编典典

我们终于设法了解了Azure Apps
CORS中间件的行为。要禁用它,您必须清除Web应用程序的CORS刀片中的每个允许的原始条目(包括*)。然后,您可以使用Web Api
2功能或使用web.config自己管理CORS。

该信息甚至可以在文档中找到

不要在一个API应用程序中同时使用Web API CORS和App Service CORS。App Service CORS优先,Web API
CORS无效。例如,如果在App Service中启用一个原始域,并在Web API代码中启用所有原始域,则您的Azure
API应用将仅接受来自您在Azure中指定的域的调用。

因此,最终的答案是:如果您的应用程序不需要非常特定的CORS管理,则可以使用Azure App Service
CORS。否则,您将需要自己处理它并禁用Web应用程序中的所有CORS配置。

2020-07-26