簡體   English   中英

Chrome:是否保證了document.cookie的順序?

[英]Chrome: Is the order of document.cookie guaranteed?

document.cookie='foobar'

。其次是:

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

在Chromes上測試時,總是給我0

Chrome的訂單是否保證(通過任何內容)?

(也可能對Ecmascript / Firefox /等感興趣。)

我想你可以認為document.cookie是某種數組。 document.cookie只是一個string

'foobar'.indexOf('foobar')返回0因為在索引0處找到了foobar

不,訂單無法保證。

document.cookie是一個具有本機setter和getter函數的訪問器屬性。 如果設置了值,則會添加/更新單個cookie。 如果獲得該值,將返回以分號分隔的所有cookie列表。

返回列表的順序(據我所知)是未定義的行為。 來自“文檔對象模型(DOM)級別2 HTML規范” document.cookie的定義僅表明:

讀取此屬性時,所有cookie都作為單個字符串返回,每個cookie的名稱 - 值對連接成一個名稱 - 值對列表,每個列表項由“;”分隔 (分號)。

一般情況下(在Chrome / Firefox / Edge上測試),似乎首先使用document.cookie設置的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標頭set-cookie放在使用document.cookie set-cookie之后,盡管它們是先設置的。 可以在這里找到一個小提琴。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM