Cookie 不会通过 HTTP GET 发送

Oli*_*ver 3 cookies google-chrome http

我使用仅 HTTP(并且在生产中安全)cookie 来通过后端 API 维护用户身份验证状态。

我遇到了一个问题,即 Cookie 没有通过 HTTP GET 请求发送。POST 和 PATCH 请求工作完美,但 gets 缺少 Cookies 请求标头。

作为标准的一部分,我没有看到任何关于此的具体限制。Mozilla 文档明确提供了一个包含 Cookie 的 GET 请求的示例? https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies

作为上下文,我目前正在开发中,因此在“localhost”上运行并使用 Chrome 63.0.3239.132。

编辑:添加图像

所以cookies是在应用程序中设置的

饼干套装

PATCH 请求按预期发送 Cookie

补丁工作,按预期发送 cookie

GET 请求不包含任何内容。我抛出 404 是因为我找不到 cookie 值。

不工作,没有发送 cookie

Oli*_*ver 5

问题在于 javascript(实际上是 Typescript)代码使用 JQuery 发出 AJAX 请求。

Cookie 被视为凭证,因此 XHR 请求必须允许withCredentials=true

let ajax = this.jQuery.ajax({
  type: "GET",
  url: getUrl,
  headers: this.generateHeaders(),
  xhrFields: {
    withCredentials: true // this was false.
  },
  timeout: this.options.RequestTimeoutMs
});
Run Code Online (Sandbox Code Playgroud)

更改withCredentials字段后,cookie 已发送!

旁注:上withCredentials。您将需要 CORS 设置来允许这样做,特别Access-Control-Allow-Credentials:true是在此时您不能使用Access-Control-Allow-Origin:*(无论如何都不是一个好主意),而是必须指定没有尾随的域/'s