通过文档和this link,我已经知道事实是foo.example.com
可以通过example.com
中的Domain = example.com
发送回复来为Set-Cookie
设置Cookie标头但为什么允许这样做?
例如,事实是,服务器(例如,foo.example.com
)无法为其兄弟姐妹(例如bar.example.com
)或低于它的域名(也称为“其子女”)设置cookie “比方说,ide.foo.example.com
),但它可以为域名设置高于它的域名(也称为”其父项“,在本例中为example.com
。
让我通过将它置于现实世界中,使问题的陈述更加清晰。就像Google App Engine上的应用一样,foo.appspot.com
显然无法为bar.appspot.com
设置Cookie,因为它们是两个不同的应用,并且它们不应该影响彼此的行为。但是为什么允许foo.appspot.com
通过在其响应标头中发送appspot.com
来为Domain = appspot.com
设置Cookie?通过这样做,foo.appspot.com
应用实际上可以影响其他应用在Google App Engine上的行为,因为浏览器会在访问bar.appspot.com
时发送此Cookie,其域名是{{1}的孩子}。
我从Udacity的Web开发课程中学到了关于cookie的所有这些知识。但我真的很困惑这个问题。任何人都可以帮忙解释一下吗?提前致谢。 : - )
答案 0 :(得分:0)
您提供的链接非常过时。太糟糕的人谷歌搜索" cookie域"会先找到它。
我应该写一个更好的;但是现在,要快速回答你的问题 - 它是关于"公共后缀"域。
服务器" example.com"为" com"?设置一个cookie不,因为" com"是一个公共后缀。
可以" foo.co.uk"为" co.uk"?设置一个cookie不,因为" co.uk"是一个公共后缀。
恰好" appspot.com"也是一个公共后缀;所以" foo.appspot.com"无法使用domain =" appspot.com"设置Cookie。 (可以,但浏览器会拒绝它)
不幸的是,没有算法来确定哪个是公共后缀。所有公共后缀的列表都在https://publicsuffix.org/
手动维护