代码之家  ›  专栏  ›  技术社区  ›  Pacerier

Chrome:document.cookie的顺序有保证吗?

  •  0
  • Pacerier  · 技术社区  · 5 年前
    document.cookie='foobar'
    

    。然后是:

    console.log(document.cookie.indexOf('foobar'))
    

    0 当在铬上测试时。

    (也可能对Ecmascript/Firefox等感兴趣)

    1 回复  |  直到 5 年前
        1
  •  1
  •   Ivar    5 年前

    这个 document.cookie

    列表返回的顺序(据我所知)是未定义的行为。 The definition of document.cookie “文档对象模型(DOM)2级HTML规范”中仅说明:

    读取此属性时,所有cookie都作为单个字符串返回,每个cookie的名称-值对连接到名称-值对列表中,每个列表项用“;”分隔(分号)。

    一般来说(在Chrome/Firefox/Edge上测试)首先使用 文档.cookie ,首先返回。所以在您的例子中,如果您在设置“foobar”之前设置了另一个cookie,那么“foobar”不会位于字符串索引0处。

    document.cookie='anothercookie=anothercookie';
    document.cookie='foobar=foobar';
    
    console.log('cookie', document.cookie); // cookie anothercookie=anothercookie; foobar=foobar
    console.log('index', document.cookie.indexOf('foobar')); // index 29
    

    set-cookie 标题放在使用 文档.cookie ,即使它们是先设定的。可以找到小提琴 here

        2
  •  0
  •   zmag    5 年前

    我想你可以考虑一下。 document.cookie 就像某种数组。但是 只是一个 string .

    'foobar'.indexOf('foobar') 退货 0 foobar 已在索引0处找到。