为啥 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?的主要内容,如果未能解决你的问题,请参考以下文章
为啥设置 document.cookie 在 Chrome 中不起作用?
为啥 Chrome 审核会建议我最小化 cookie 大小?
为啥我会收到“通过指定其 SameSite 属性指示是不是在跨站点请求中发送 cookie”?