[英]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.