在JavaScript中在.github.io域上设置cookie

时间:2017-11-21 17:54:19

标签: javascript cookies

subdomain.foo.com上的某个页面上,我知道可以使用domain=foo.com子句(或根据早期规范domain=.foo.com)在JavaScript中设置Cookie,并拥有该Cookie适用于所有子域名。

当我在GitHub页面页面(例如yelp.github.io)上打开Chrome中的开发者控制台并使用domain=github.io子句尝试此操作时,Cookie无法设置({{ 1}}产生空字符串)。如果我省略document.cookie子句,或者使用domain,我似乎只能设置cookie。

我可以理解为什么GitHub会出于安全原因想要以这种方式限制cookie范围,但我不确定这实际上是如何工作的,或者我所看到的行为背后是什么。 domain=yelp.github.io域名有什么特别之处吗?是否有应用的安全政策我不知道?或者我只是做错了?

github.io

1 个答案:

答案 0 :(得分:2)

根据relevant specification(RFC 6265),如果从子域设置,则会拒绝使用Cookie作为公共后缀:

If the user agent is configured to reject "public suffixes" and the domain-attribute is a public suffix:
    If the domain-attribute is identical to the canonicalized request-host:
        Let the domain-attribute be the empty string.
    Otherwise:
        Ignore the cookie entirely and abort these steps.
     

注意:A"公共后缀"是一个由a控制的域              公共注册局,例如" com"," co.uk"和" pvt.k12.wy.us"。              此步骤对于防止attacker.com至关重要              通过设置cookie来破坏example.com的完整性              域名属性为" com"。不幸的是,这套              公共后缀(也称为"注册管理机构控制的域名")              随时间变化。如果可行,用户代理应该使用              最新的公共后缀列表,例如维护的列表              Mozilla项目http://publicsuffix.org/

github.io位于public suffix list