OPTIONS请求中未发送Cookie

12
我正在开发一个Angular 1应用程序,使用cookie身份验证。问题是:在进行"OPTIONS"调用时,不会发送cookie,服务器会尝试重新将用户重定向到登录页面。我想知道,这是谁的“错”?是服务器(Azure API应用)还是前端?如果是前端,我该如何在“OPTIONS”调用中发送cookie?我正在使用angular-resource,并已将其配置如下:
``` $httpProvider.defaults.withCredentials = true ```

你是在进行显式的OPTIONS请求,还是发起了一次预检请求以获取CORS权限? - Quentin
@Quentin 这是预检。 - Jiew Meng
1个回答

22

规范说明

否则,进行预检请求。使用referrer source作为重写referrer source,手动重定向标志和阻止cookie标志,从源起点origin获取请求URL,使用OPTIONS方法,并具有以下附加约束条件... 排除用户凭据

并且还要注意

本规范中的用户凭据一词指cookie、HTTP身份验证和客户端SSL证书,这些都是基于用户代理先前与源之间的交互而发送的。特别地,它不涉及代理身份验证或Origin头。

因此,客户端不应发送cookie,服务器应能够在不需要先进行身份验证的情况下响应预检请求。


@MoshtabaDarzi — 任何代码都是特定于您的服务器平台的。如果您在配置服务器以执行本答案最后一段所述操作时遇到问题,则应提出一个新问题,包括 [mcve] 和服务器配置的详细信息。 - Quentin
1
引用实际上来自错误的规范(whatwg);上述措辞仅出现在W3规范中:https://www.w3.org/TR/2020/SPSD-cors-20200602/#cross-origin-request-with-preflight-0 - Cedric Reichenbach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接