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
GET 请求不包含任何内容。我抛出 404 是因为我找不到 cookie 值。
问题在于 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