8

我使用 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 标头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

其中标头仅包含 Cookie1,其域为localhost.

为什么我的 Firefox 不发送 Cookie2 而不是 Cookie1?

4

2 回答 2

5

https://stackoverflow.com/a/4212964/14731RFC 6265的作者回答了这个问题:

如果我们今天设计 cookie,我们肯定会按端口设计。但是,cookie 在当今 Internet 上被广泛使用,进行此类更改会破坏太多网站。在大多数情况下,cookie 是“完成”的,因为我不希望它们发生太大变化。不幸的是,这意味着我们坚持使用不考虑端口号的 cookie。

资料来源:https ://groups.google.com/d/msg/comp.infosystems.www.misc/6WXdQ2RFhG8/VvOUuR3FNAUJ

于 2014-06-16T21:07:29.033 回答
0

cookie 端口不应该在域上设​​置(如在错误的“domain=foobar.com:8443”中),而是作为单独的 cookie 'port' 参数(如在“domain=foobar.com; port=8443”中)

于 2015-03-24T12:54:46.550 回答