由于我遇到了奇怪的域/子域 cookie 问题,我想知道浏览器如何处理 cookie。如果他们以不同的方式做到这一点,那么了解这些差异也将是一件好事。
换句话说 - 当浏览器收到一个 cookie 时,该 cookie 可能有一个域和一个附加到它的路径。或者不是,在这种情况下,浏览器可能会用一些默认值代替它们。问题1:它们是什么?
稍后,当浏览器即将发出请求时,它会检查其 cookie 并过滤掉它应该为该请求发送的那些。它通过将它们与请求路径和域进行匹配来做到这一点。问题2:匹配规则是什么?
添加:
我问这个的原因是因为我对一些边缘情况感兴趣。喜欢:
.example.com
www.example.com
example.com
anotherexample.com
www2.example.com
.com
添加2:
另外,有人可以建议我应该如何设置一个cookie,以便:
尽管现在应该定义 cookie 的RFC 2965(Set-Cookie2已经过时的RFC 2109),但大多数浏览器并不完全支持它,而只是遵守Netscape 的原始规范。
Set-Cookie2
Domain属性值和有效域是有区别的:前者取自Set-Cookie头域,后者是该属性值的解释。根据 RFC 2965,以下内容应适用:
Set-Cookie
.
拥有有效域,它还必须与当前请求的域匹配以进行设置;否则 cookie 将被修改。相同的规则适用于选择要在请求中发送的 cookie。
将这些知识映射到您的问题上,应适用以下内容:
Domain=.example.com
Domain=example.com
并为/通过*www.example.com*和*example.com.www.example.com设置和读取 cookie,分别为和设置它.example.com。但是第一个 ( .www.example.com) 只能被该域下的其他域访问(例如*foo.www.example.com*或*bar.www.example.com*),.example.com这些域也可以被*example.com下的任何其他域访问(例如foo. example.com*或*bar.example.com)。
.www.example.com