ajax - Chrome 没有在 AJAX POST 上设置 cookie

标签 ajax google-chrome cookies

我对我的网络服务执行了一个 AJAX POST,它在响应中设置了 2 个 cookie,但 Chrome 没有设置它们。然而,Safari 和 Firefox 可以。

请求如下:

POST /api/login HTTP/1.1
Host: 0.0.0.0:8080
Connection: keep-alive
Content-Length: 50
accept: application/json
Origin: http://0.0.0.0:8080
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2490.80 Safari/537.36
content-type: application/json
Referer: http://0.0.0.0:8080/form
Accept-Encoding: gzip, deflate
Accept-Language: en-US,en;q=0.8,nl;q=0.6,de;q=0.4,fr;q=0.2,pl;q=0.2

响应:

HTTP/1.1 200 OK
X-Powered-By: Express
Vary: X-HTTP-Method-Override, Accept-Encoding
x-frame-options: sameorigin
set-cookie: keystone.uid=s%3A55efe88923f753865f7a0985%3Ac5aT64aih9lxXi%2BNiSMr1rUJW4kzWyyNUforvUOrckk.JovuV%2FqeoQ32PiuyNPAZ7JcbIxXBcBvj%2FWFp8vf3SQQ; Path=/; HttpOnly
set-cookie: keystone.sid=s%3ADcv5el-TjLRkOSH9vNbvxQoOai-SQj-3.ZTfPFwEZp5mdVHSDZTukO%2FnrDnSpGU3OMW3tQu%2FSz7U; Path=/; HttpOnly
Content-Type: application/json; charset=utf-8
Content-Length: 224
ETag: W/"e0-B6OeRPdDEP0WPVdlZHqarA"
Date: Fri, 06 Nov 2015 14:39:37 GMT
Connection: keep-alive

我没主意了。这也不适用于端口 80 上的完全限定域名。

最佳答案

找到解决方案:

您已发送带有凭据的请求(XMLHttpRequest.withCredentials 或例如 credentials: 'include' for whatwg fetch)。

尽管这是毫无意义的,因为您正在登录并且没有任何/有无效的 cookie,它会使 Chrome 存储来自返回答案的 cookie。 ¯\_(ツ)_/¯

正如@Anne 所指出的,XMLHTTPRequest 规范实际上要求用户代理忽略返回的 cookie,除非指定了 withCredentialshttp://www.w3.org/TR/XMLHttpRequest/#the-withcredentials-attribute

关于ajax - Chrome 没有在 AJAX POST 上设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33569731/

相关文章:

php - 如何在 php 或 javascript 上扫描图像?

jquery - Ajax加载图像

javascript - 当 Javascript 关闭时,Flash 变量在 Chrome 中无法访问

javascript - 在 Chrome 中使用 javascript 在网站上插入用户名和密码

javascript - 这是实现 cookie 的正确方法吗?

php - PHP 中 Session 相对于 Cookie 的优势

javascript:单击按钮时进行 POST 调用

javascript - 如何通过内置的 Ajax 框架使用 October CMS 为 Select2 提供数据源

google-chrome - Chromium SVG 悬停 <title> 工具提示奇怪

ruby-on-rails - 在 grape api 端点中验证事件管理员用户