我可以从二级域名获取cookie吗?

徐明明*_*徐明明 7 javascript cookies

有两个域: 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域而不是example.com中设置的cookie ?


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

我要实现的目标是:1.我想写一个名为功能readCookie读取与名称的Cookie test_cookie其中:a.当存在一个cookie:test_cookie下域example.com和NO饼干test_cookie下域a.example.com,readCookie返回null湾 当有一个cookie:test_cookie下域example.com,也是一个cookie的test_cookie下域a.example.com,readCookie返回域下的cookie值a.example.com ℃.当没有cookie:exampler.com下的test_cookie,但有一个cookie test_cookie下域a.example.com,readCookie返回域下的cookie值a.example.com.

Gum*_*mbo 12

这取决于cookie的定义方式,特别是如果Domain属性指定了它具有的值(请参阅RFC 2965 - 用户代理角色):

  • 如果缺少Domain属性,则用户代理假定当前主机; 除此以外
  • 如果设置了Domain属性,则其值必须以.like 开头.example.com(如果不是,例如example.com,它将由用户代理更改.example.com).

现在,cookie的域必须与要在请求中发送的域进行域匹配.情况就是这样:

  • 如果两个域相同(如果缺少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 |      ?      |      ?        |        ?        |         ?
Run Code Online (Sandbox Code Playgroud)

因此,如果您希望cookie仅对a.example.com有效,要么省略Domain属性,要么指定Domain属性.a.example.com(这将使cookie对a.example.com及其子域有效).


bob*_*nce 3

无法example.com通过设置domain参数将 cookie 限制为 -only。然而,在大多数浏览器中,cookie 将默认为example.com-only 如果没有domain提供,不幸的是,在 IE 中,它默认允许子域访问 cookie。

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