【问题标题】:Cookies not sent on OPTIONS requests未在 OPTIONS 请求中发送 Cookie
【发布时间】:2017-01-20 09:28:06
【问题描述】:

对于我正在开发的 Angular 1 应用程序,使用了 cookie 身份验证。问题是:在进行OPTIONS 调用时,cookie 不会发送,服务器会尝试将用户重定向到再次登录。只是想知道,这是谁的“错”?服务器(Azure API 应用程序)还是前端?如果是前端,我如何在OPTIONS 通话中发送 cookie?我正在使用augular-resource 并将其配置如下:

$httpProvider.defaults.withCredentials = true

【问题讨论】:

  • 您是在发出明确的 OPTIONS 请求,还是在寻求 CORS 许可的预检请求?
  • @Quentin 预检

标签: javascript angularjs ajax azure cookies


【解决方案1】:

specification says:

否则,请发出预检请求。使用引用源作为覆盖引用源并设置手动重定向标志和阻止 cookie 标志,使用方法 OPTIONS 并使用以下附加约束从源源源获取请求 URL……排除用户凭据

and also

在本规范中,术语用户凭据是指 cookies、HTTP 身份验证和客户端 SSL 证书,这些证书将根据用户代理之前与源的交互来发送。具体来说,它不涉及代理身份验证或 Origin 标头。

因此客户端不应发送 cookie,服务器应能够响应预检请求而无需先进行身份验证。

【讨论】:

  • @MoshtabaDarzi — 任何代码都特定于您的特定服务器平台。如果您在配置服务器以执行本答案最后一段所说的操作时遇到问题,那么您应该提出一个新问题,包括 minimal reproducible example 和服务器配置的详细信息。
  • 引用实际上来自错误的规范(whatwg);上述措辞仅出现在 W3 规范中:w3.org/TR/2020/SPSD-cors-20200602/…
猜你喜欢
  • 2020-08-19
  • 2021-05-29
  • 2016-07-25
  • 2019-12-24
  • 2014-11-15
  • 1970-01-01
  • 2017-01-27
  • 1970-01-01
  • 2016-08-05
相关资源
最近更新 更多