google-chrome - Cookie 不会在 HTTP GET 上发送

标签 google-chrome http cookies

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

但是,我遇到了一个问题,即 Cookie 未在 HTTP GET 请求上发送。 POST 和 PATCH 请求完美运行,但获取缺少 Cookies 请求 header 。

我没有看到这是作为标准一部分的特定限制。 Mozilla 文档明确有一个包含 Cookies 的 GET 请求示例? https://developer.mozilla.org/en-US/docs/Web/HTTP/Cookies

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

编辑:添加图片

所以在应用程序中设置了cookie

Cookies Set

PATCH 请求按预期发送 Cookie

Patch Working, sending cookies as expected

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

Get Not Working, no cookies are sent

最佳答案

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

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
});

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

旁注:关于withCredentials。您将需要 CORS 设置来允许此操作,特别是 Access-Control-Allow-Credentials:true 此时您不能使用 Access-Control-Allow-Origin:*(不是无论如何是个好主意)但必须指定没有尾随 /'s

的域

关于google-chrome - Cookie 不会在 HTTP GET 上发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48423214/

相关文章:

javascript - 如何解决 "cannot read property ' push' of undefined"in Firebug Lite?

html - 为什么表情符号不能在 Chrome 中呈现超过特定大小?

javascript - Chrome 扩展 : sending data to window created with chrome. windows.create

http - Go:如何组合两个(或更多)http.ServeMux?

javascript - 如何在 JavaScript 中查看最后一个 GET HTTP 请求

python - 是否需要刷新浏览器才能看到新的 cookie?我注意到的令人困惑的问题

javascript - Chrome 扩展程序,添加监听器没有响应

javascript - 如何使用 C++ 通过 websocket 发送数据?

c# - 在 C# 中捕获 cookie 响应

C# 无法将 cookiecontainer 分配给 asmx web 服务客户端