为啥 Chrome 没有收到我的 cookie?

Posted

技术标签:

【中文标题】为啥 Chrome 没有收到我的 cookie?【英文标题】:Why is Chrome not receiving my cookie?为什么 Chrome 没有收到我的 cookie? 【发布时间】:2018-12-20 21:19:17 【问题描述】:

我已经设置了一个网络服务器,并提供了一条路线。当我用curl 击中它时,我得到:

$ curl -i -X POST http://dev.com:5000/user/check
HTTP/1.0 200 OK
Content-Type: application/json
Content-Length: 40
Access-Control-Allow-Origin: *
Vary: Cookie
Set-Cookie: session=eyJjaGVjayI6dHJ1ZX0.Dij_Ng.OL7a0pycpZgU45zEIzC5ZTfeCdk; Domain=.dev.com; HttpOnly; Path=/
Server: Werkzeug/0.14.1 Python/3.6.5
Date: Thu, 12 Jul 2018 15:03:18 GMT


  "result": null,
  "status": "ok"
   

但是,当我在 Chrome 中点击它时,调试控制台会报告:

常规

Request URL: http://dev.com:5000/user/check
Request Method: POST
Status Code: 200 OK
Remote Address: 127.0.0.1:5000
Referrer Policy: no-referrer-when-downgrade

响应标头

Access-Control-Allow-Origin: http://localhost:8080
Content-Length: 40
Content-Type: application/json
Date: Thu, 12 Jul 2018 15:04:10 GMT
Server: Werkzeug/0.14.1 Python/3.6.5
Vary: Origin, Cookie

请求标头

Provisional headers are shown
Accept: application/json, text/plain, */*
Origin: http://localhost:8080
Referer: http://localhost:8080/
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_5) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/67.0.3396.99 Safari/537.36

不返回任何 cookie。怎么回事?

【问题讨论】:

【参考方案1】:

我在我的本地主机上进行了类似的测试,发现了同样的问题。

我在我的网站example.com 上创建了一个 php 页面,该页面以包含domain 和其他值的类似Set-cookie 标题响应。

测试 1

我将该页面称为<script src="http://example.com/my.php">,来自localhost

Chrome 网络标签在 Response Headers 中没有显示 Set-cookie 标头,但 cookie 已设置,我在 devtools 的 Application 标签中确认了这一点。

测试 2

此外,在此页面上,我使用document.createElement('script') 从控制台向 php 页面发出另一个请求,设置其src 属性,然后将该元素附加到正文。

但是,Request Headers 不包含任何Cookie 标头。

测试 3

我打开另一个选项卡,打开 devtools,然后输入 http://example.com/my.php 并回车。

这一次,Cookie出现Request Headers

另外,在测试 1 和测试 2 中,Request Headers 显示为 临时标头显示,但在测试 3 中并非如此。

我想知道这是否是 domain 参数的问题。

【讨论】:

以上是关于为啥 Chrome 没有收到我的 cookie?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的chrome不能自动记住cookie

为啥设置 document.cookie 在 Chrome 中不起作用?

为啥 Chrome 审核会建议我最小化 cookie 大小?

为啥我会收到“通过指定其 SameSite 属性指示是不是在跨站点请求中发送 cookie”?

自己用javascript设定cookie,可是为啥在chrome浏览器下却是无效的!

为啥 Chrome Dev-tools 的 Resources -> Cookies 下会有多组 cookie?