我使用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
唯一的区别是域属性,一个是localhost
,另一个是端口号。
当我尝试请求http://localhost:8080/Ex05Cookie/
时,这是HTTP标头:
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
其中标头仅包含域名为localhost
的Cookie1。
为什么我的firefox不发送Cookie2而不是Cookie1?
答案 0 :(得分:5)
https://stackoverflow.com/a/4212964/14731和RFC 6265的作者
回答了这个问题如果我们今天正在设计cookie,我们肯定会按端口进行设计。然而,cookie现在在互联网上被广泛使用,并且进行这种改变会破坏太多的网站。在大多数情况下,cookie已经完成了#34;从某种意义上说,我不希望他们改变太多。 不幸的是,这意味着我们坚持使用不尊重端口号的cookie。
来源:https://groups.google.com/d/msg/comp.infosystems.www.misc/6WXdQ2RFhG8/VvOUuR3FNAUJ
答案 1 :(得分:0)
cookie端口不应该在域上设置(如错误的“domain = foobar.com:8443”),而是作为单独的cookie“端口”参数(如“domain = foobar.com; port”) = 8443" )