【问题标题】:Why web browser don't care about port number when sending cookie?为什么网络浏览器在发送 cookie 时不关心端口号?
【发布时间】:2015-03-24 20:54:46
【问题描述】:

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

【问题讨论】:

  • 我猜这是 HTTP 机制的“同域”问题,浏览器不会区分不同的路径和/或端口以在同一个域中使用不同的 cookie。
  • 但这可能会导致问题,因为不同的服务器运行在不同的端口上,并且httpd服务器(80端口)创建的cookie不应该发送到Tomcat(8080端口)。
  • 非常正确;我也想知道谁知道解决方法。
  • IDK 如果它会很有帮助,但是这篇博文有一些关于 cookie 及其域属性以及浏览器如何处理它们的信息:github.com/blog/1466-yummy-cookies-across-domains
  • 这里对Are HTTP cookies port specific?这个问题进行了很好的讨论。实际上有两个方面:1)从浏览器到源服务器和2)从源服务器到浏览器。两者都在RFC6265中得到了很好的解释

标签: http cookies


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-28
      • 2012-10-30
      • 2023-02-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多