http - 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>
解决方案
不,它不能。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
。