发送cookie时为什么Web浏览器不关心端口号?

时间:2013-04-29 05:39:06

标签: http cookies

我使用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?

2 个答案:

答案 0 :(得分:5)

https://stackoverflow.com/a/4212964/14731RFC 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" )