【问题标题】:Can I get cookie only from second level domain?我只能从二级域获取 cookie 吗?
【发布时间】:2010-08-25 14:22:50
【问题描述】:

有两个域: a.example.com example.com

example.coma.example.com 的父域。现在 a.example.comexample.com 都可以写入一个名为 test_cookie 的 cookie。现在我们有一个 a.example.com 页面,它将使用 javascript 读取 cookie test_cookie 的值。有没有办法只读取a.example.com的域中设置的cookie而不是example.com


也许我的问题有点不清楚,

我想要达到的目标是: 1. 我想编写一个名为 readCookie 的函数来读取名为 test_cookie 的 cookie,其中: 一个。当有 cookie 时:example.com 域下的 test_cookiea.example.com 域下的无 cookie test_cookie >, readCookie 返回 null 湾。当有 cookie 时:域 example.com 下的 test_cookie 和域 a.example.com 下的 cookie test_cookie strong>,readCookie 返回域 a.example.com 下的 cookie 值 C。当没有cookie时:exampler.com下的test_cookie,但域a.example.com下有一个cookietest_cookie strong>,readCookie返回域a.example.com下的cookie值。

【问题讨论】:

    标签: javascript cookies


    【解决方案1】:

    这取决于 cookie 是如何定义的,尤其是如果 Domain 属性指定了它的值(参见RFC 2965 – User Agent Role):

    • 如果 Domain 属性缺失,则用户代理假定当前主机;否则
    • 如果设置了 Domain 属性,其值必须以. 开头,例如.example.com(如果没有,例如example.com,用户代理会将其更改为.example.com )。

    现在 cookie 的域必须 domain-match 在请求中发送的域。就是这样:

    • 如果两个域相同(如果缺少 Domain 参数),或者
    • 如果 Domain 属性中指定的值必须是域的后缀。

    这意味着:

     effective domain | example.com | a.example.com | foo.example.com | bar.a.example.com
    ------------------+-------------+---------------+-----------------+-------------------
          example.com |      ✓      |      ✗        |        ✗        |         ✗
        a.example.com |      ✗      |      ✓        |        ✗        |         ✗
         .example.com |      ✓      |      ✓        |        ✓        |         ✓
       .a.example.com |      ✗      |      ✓        |        ✗        |         ✓
    

    因此,如果您希望 cookie 仅对 a.example.com 有效,则可以省略 Domain 属性或指定 Domain em> 属性与 .a.example.com(这将使 cookie 对 a.example.com 及其子域有效)。

    【讨论】:

      【解决方案2】:

      无法通过设置domain 参数将cookie 限制为example.com-only。但是,在大多数浏览器中,cookie 将默认为 example.com——仅当未提供 domain 时。不幸的是,在 IE 中,它默认允许子域访问 cookie。

      这就是为什么您将主站点放在www.example.com 而不仅仅是example.com。对于主域 example.com 上的站点,您无法可靠地将 cookie 分开。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-11-14
        • 1970-01-01
        • 2011-06-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-05
        • 1970-01-01
        相关资源
        最近更新 更多