按我的认知应该是没有问题的,现在有点怀疑人生
现在在domain:80
部署了 JSON 接口,前端 VUE 写的,静态文件放在同域名的domain:8080
端口上一个静态服务器。出现登录时获取到Set-Cookie
头但是浏览器没有保存
按以前跨域项目的经验这样是完全没有问题的,CORS 都设置好了,XHR 的 withCredentials 也加了,Cookie 只用 domain 和 path 区分这个 set-cookie 完全没问题。但是就是遇到了这种情况
比较了一下和原来跨域的不同点,猜测可能是影响因素:
两个端口服务都是 HTTPS,不过应该没影响啊,Cookie 没设置 Secure 属性
HTTP2,发现 HTTP2 响应头为全小写,可能影响 Access-Control-Allow-Headers
请求&响应:
POST /login HTTP/1.1
Host: domain:80
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0
Accept: application/json, text/plain, */*
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Referer: https://domain:8080/
Content-Type: application/x-www-form-urlencoded
Content-Length: 21
Origin: https://domain:8080
Connection: close
Pragma: no-cache
Cache-Control: no-cache
uname=*&pwd=*
HTTP/1.1 200 OK
Access-Control-Allow-Credentials: true
Access-Control-Allow-Origin: https://domain:8080
Access-Control-Expose-Headers: Content-Type
Content-Type: application/json; charset=utf-8
Set-Cookie: think=MTU*****; Path=/; Expires=Tue, 03 Dec 2019 13:52:58 GMT; Max-Age=2592000
Vary: Origin
Date: Sun, 03 Nov 2019 13:52:58 GMT
Content-Length: 10
Connection: close
{"code":0}
接收到 Cookie 后查看火狐的本地保存 Cookie 发现没有保存,导致之后鉴权接口访问都没有携带 Cookie
1
ysc3839 2019-11-04 08:59:27 +08:00 via Android
> 发现 HTTP2 响应头为全小写
本来就不区分大小写,只是大多数程序习惯首字母大写。 |
2
whoami9894 OP @ysc3839
嗯这个我知道,只是实在找不到原因 |
3
whoami9894 OP dd
|
4
sanmaozhao 2019-11-04 15:26:23 +08:00
能想到的两点建议:
1、有没有试过换一台机器是否正常(最好是没访问过你这个 domain 的)? 我以前遇到过,在我的 Chrome 上无论如何都设置不上 cookie。 原因好像是以前在同域名设置过有问题的 cookie,导致后续 cookie 设不上。 后来清空所有 cookie 或者换机器就行了 2、如果担心和 http2 有关,就先禁用用 http1.1 试试看呗 |