为什么Chrome不能接收我的Cookie?

3

我已经设置好了一个Web服务器,并提供了一条路由。当我使用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个回答

0

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

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

测试1

我从 localhost 调用该页面作为 <script src="http://example.com/my.php">

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

测试2

此外,在此页面上,我使用 document.createElement('script') 创建了另一个请求到 PHP 页面的请求,设置其 src 属性,然后将该元素附加到 body 中。

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

测试3

我打开了另一个选项卡,打开了开发者工具,然后输入 http://example.com/my.php 并按回车键。

这一次,在 请求头 中出现了 Cookie

此外,在测试1和测试2中,请求头 显示为 显示临时标头,但在测试3中不是这样。

我想知道这是否与 domain 参数有关。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接