【问题标题】:Can One Domain Have Multiple Cookies?一个域可以有多个cookie吗?
【发布时间】:2010-11-11 00:55:30
【问题描述】:

一个域可以在访问者的网络浏览器上生成多个 cookie 吗? 如果是这样,当用户访问网站时,哪些 cookie 将被传送到服务器?为什么一个网站会生成多个 cookie?

我检查了我的谷歌浏览器的 Cookies 设置,发现有多个 nytimes.com 的 cookie。

如果服务器想在 cookie 中存储多个键/值对,它们不能存储在同一个 cookie 中吗?

【问题讨论】:

    标签: http cookies


    【解决方案1】:

    是的:)

    我推测这些 cookie 是由网站的不同组件创建的,这些组件是由不同的开发团队创建的。我们所有人都应该意识到,当我们需要完成一些开发但没有时间等待协作或其他团队为我们开发必要的层时,通常会出现这种情况。

    来自维基百科:

    主要浏览器的每个域最大存储 cookie 的相关计数是:

    • Firefox 3.0:50
    • 歌剧 9:30
    • Internet Explorer 7:50

    【讨论】:

      【解决方案2】:

      当您编写程序时,您是否只使用一个变量?不,对吧?

      这里的原理相同 - cookie 只是您的程序(服务器/客户端)可以使用的键/值对。

      【讨论】:

      • 你的意思是一个cookie只能保存一个键/值对?我认为可以将各种键/值对存储在同一个 cookie 中。
      【解决方案3】:

      一个域可以在访问者的网络浏览器上生成多个 cookie 吗?

      是的。确切的限制取决于浏览器,Internet Explorer used to accept 20 but increased this to 50

      如果是这样,当用户访问网站时,哪些 cookie 将被传送到服务器?

      所有的

      为什么一个网站会生成多个 cookie?

      这样您就不需要在一个 cookie 中序列化所有数据(可能来自系统的不相关部分)。

      【讨论】:

        【解决方案4】:

        是的,一个域可以生成许多 cookie。浏览器最大数量varies

        【讨论】:

          【解决方案5】:

          -每个站点都可以根据需要创建任意数量的 cookie。 (但它接缝可能因浏览器而异)

          -当用户访问网站时,所有活动的 cookie 都会被发送。

          -使用多个 cookie 来存储单独的数据是有意义的。在一个极端的比较中,将 cookie 与类进行比较;)

          【讨论】:

            【解决方案6】:

            cookie 只是一个键/值对,具有可选的域、路径、过期和访问设置。

            将数据分成单独的 cookie 的原因包括:

            • 更易于维护代码 - 需要存储状态的网站的各个位不需要相互操作即可将它们全部打包到一个 cookie 中。
            • 更轻松的用户管理 - 最终用户(您)可以更轻松地查看存储的内容,并且可以有选择地删除某些 cookie。
            • 不同的用途 - 例如,保存会话密钥的 cookie 可以标记为 secure; httpOnly;,而保存 UI 首选项的 cookie 仍然可以通过 javascript 访问。
            • 减少请求大小 - 如果某些 cookie 仅用于某些页面,则可以使用 path 属性,这样就不会在不需要的页面上不必要地发送它们。

            【讨论】:

              【解决方案7】:

              服务器可以指定任意数量的 cookie,每个 cookie 都在其自己的 Set-Cookie 标头中指定。

              每个Set-Cookie 标头至少包含CookieName=CookieValue 对,除了securehttpOnly 属性之外,还可能包含其他key=value 对。这些附加对和属性是引用实际 cookie 的元数据,不能用于设置附加 cookie。

              当客户端将 cookie 发送回服务器时,它会将它们全部组合成一个 Cookie 标头。这是可能的,因为客户端从不发回元数据,只发回 cookie 名称和值。

              考虑这个 HTTP 交换:

              GET / HTTP/1.1
              Host: www.example.com
              
              HTTP/1.1 302 Found
              Location: http://www.example.com/index.html
              Set-Cookie: UserID=12345; Expires=Wed, 09 Jun 2021 10:18:14 GMT; domain=.example.com;path=/index.html; httpOnly`
              Set-Cookie: SessionID=6478; domain=.example.com;path=/index.html; httpOnly
              Set-Cookie: foo=bar
              
              GET /index.html HTTP/1.1
              Host: www.example.com
              Cookie: UserID=12345; SessionID=6478; foo=bar
              

              【讨论】:

                猜你喜欢
                • 2011-07-14
                • 1970-01-01
                • 2016-06-17
                • 1970-01-01
                • 2012-05-02
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多