我用firebug手动创建了两个cookie:
Cookie1=value1; expires=Sat, 29 Mar 2014 06:21:54 GMT; path=/Ex05Cookie; domain=localhost; HttpOnly
Cookie2=value2; expires=Sat, 29 Mar 2014 06:21:54 GMT; path=/Ex05Cookie; domain=localhost:8080; HttpOnly
Run Code Online (Sandbox Code Playgroud)
唯一的区别是域属性,一个是localhost另一个有端口号.
这是我尝试请求时的HTTP标头http://localhost:8080/Ex05Cookie/:
GET /Ex05Cookie/ HTTP/1.1
Host: localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:20.0) Gecko/20100101 Firefox/20.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate
Cookie: Cookie1=value1
Connection: keep-alive
Cache-Control: max-age=0
Run Code Online (Sandbox Code Playgroud)
标头只包含域名为的Cookie1 localhost.
为什么我的firefox不发送Cookie2而不是Cookie1?
这可以通过/sf/answers/294907511/和RFC 6265的作者来回答:
如果我们今天设计cookie,我们肯定会按端口进行设计.然而,cookie现在在互联网上被广泛使用,并且进行这种改变会破坏太多的网站.在大多数情况下,cookie是"完成"的,因为我不希望它们发生太大变化.不幸的是,这意味着我们坚持使用不尊重端口号的cookie.
资料来源:https://groups.google.com/d/msg/comp.infosystems.www.misc/6WXdQ2RFhG8/VvOUuR3FNAUJ