2017-07-19 159 views
5

我想要做一些简单而简单的事情:设置一个cookie!但浏览器(Chrome和Safari测试)完全忽略它们。 所以响应报头的样子:浏览器不能保存来自响应头的cookie

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Origin:* 
Connection:keep-alive 
Content-Encoding:gzip 
Content-Type:application/json; charset=utf-8 
Date:Wed, 19 Jul 2017 04:51:51 GMT 
Server:nginx 
Set-Cookie:UserAuth=<some jwt>; Path=/; Domain=10.10.1.110; Expires=Wed, 19 Jul 2017 12:51:51 GMT; HttpOnly; Secure 
Transfer-Encoding:chunked 
Vary:Origin 

请求确实包括withCredentials=true。 但Chrome中的Cookie部分为空。我尝试完全删除域,删除路径,我能想到的每个配置,但浏览器不会玩球。

我错过了什么?

+0

您使用'Secure'标记设置cookie,指示浏览器仅通过加密连接将cookie返回给应用程序。你的连接是否满足这个强制要求? –

+0

是的,连接是通过https。 –

+0

对于交叉原点请求,当使用'withCredentials = true'和'XMLHttpRequest'对象时,不能使用''Access-Control-Allow-Origin'来允许原点。你是否想要请求跨源数据?您可能会尝试显式将域名添加到“Access-Control-Allow-Origin”。 –

回答

0

事实证明原始请求的'withCredentials = true'作为请求头而不是在XMlHttpRequest配置对象上设置。

0

您的cookie显示 HttpOnly; 安全;

使用的HttpOnly标志生成cookie时有助于减少客户端脚本的风险访问受保护的cookie

安全标志的目的是阻止cookies被未经授权方观察到由于的透射明文形式的cookie。 通过设置安全标志,浏览器将阻止通过未加密通道传输cookie。

如果通过HTTP与TLS图层中的安全标志一起旅行,Cookie将被中断。 因此请检查您的偏好并相应地设置Cookie的配置。

相关问题