首页 > 解决方案 > 为什么 Chrome 没有收到我的 cookie?

问题描述

我已经建立了一个网络服务器,并提供了一条路线。当我击中它时,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。这是怎么回事?

标签: javascriptgoogle-chromecookies

解决方案


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

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

测试 1

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

Chrome 网络选项卡没有显示Set-cookie标题Response Headers,但设置了 cookie ,我在 devtools的应用程序选项卡中确认了这一点。

测试 2

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

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

测试 3

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

这一次Cookie出现Request Headers.

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

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


推荐阅读