首页 > 解决方案 > set-cookie 的 'Domain' 可以对任何域进行赋值吗?

问题描述

set-cookie 的 'Domain' 可以对任何域进行赋值吗?</p>

例如:

登录时www.google.com

一个 xhr tofacebook.com被请求

并以响应 Header 响应set-cookie:aaa=1;domain=twitter.com

cookie会设置domain=twitter.com成功吗?</p>

标签: httpcookieshttpssetcookie

解决方案


不,它不能。HTTP 客户端、用户代理和 Web 浏览器需要拒绝任何Set-Cookie指定Domain=与当前文档的 Origin 不匹配的标头。

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie

不包括设置它的服务器的域的 cookie 应该被用户代理拒绝。

如果由托管在的服务器设置,以下 cookie 将被拒绝originalcompany.com

Set-Cookie: qwerty=219ffwef9w0f; Domain=somecompany.co.uk

服务域的子域的 cookie 将被拒绝。

如果由托管在的服务器设置,以下 cookie 将被拒绝example.com

Set-Cookie: sessionId=e8bb43229de9; Domain=foo.example.com

Set-Cookie头的Domain=参数是允许子域的网站允许其 cookie 被父域网站使用,但反之则不行。

请注意,浏览器知道 ccTLD 的结构,因此 at 的网站example.co.uk不能使用Set-Cookie, Domain=co.uk,但 at 的网站subdomain.example.co.uk 可以使用Set-Cookie, Domain=example.co.uk


推荐阅读