[5] RFC 2965 によれば、
Cookie2
欄などで使われる
cookie
の構文は
です。 (set-cookie-av
は cookie 属性。)
生成字句間には空白が入れられます。
document.cookie
属性 (DOM HTML)[19] document.cookie
属性は、
当該資源のクッキーを表します HTML5。
[15] 実装仕様書:
[20] 取得時には、 document.cookie
属性は次のように動作しなければなりません
HTML5。
INVALID_STATE_ERR
例外を投げます。SECURITY_ERR
を投げます。Cookie:
HTTP 頭欄の値として使う文字列と同じものを、
RFC 2109 4.3.4節またはより新しい仕様書に基づき返します。ただし、
HTTPのみのクッキーは除きます。[21] 設定時には、 document.cookie
属性は次のように動作しなければなりません
HTML5。
INVALID_STATE_ERR
例外を投げます。SECURITY_ERR
を投げます。Set-Cookie:
頭欄として指定された値が返されたとした場合と同じようにして、
RFC 2109 4.3.1〜4.3.3節またはより新しい仕様書に基づきクッキーを処理します。ただし、
HTTPのみのクッキーの値を上書きすることはありません。[22] document.cookie の覚え書き - Ci.nsIZIGOROu - Mozilla 拡張機能勉強会 ( 版) http://moz-addon.g.hatena.ne.jp/ZIGOROu/20081001/1222845305
ところで、a=1, b=2 と言う二つを同時に設定する事は出来ません。
document.cookie="a=1;b=2"; alert(document.cookie);とやると a=1 しか設定出来てません。
A, B と言うタブを開いていて、共に test.example.com のページだとすると。
A の document.cookie を弄ると、A での変更は B でも読める権限ならば即座に反映されている。
[1] DOM 0+ の属性 HTMLDocument.
は、当該文書・枠に関連付けられた持続状態情報
(Cookie) を扱うための属性です。
属性値の型は cookie
DOMString
です。
DOM 1 FE ではこの属性は読取専用でした。
DOM 1 は意味的な点には触れていません。 DOM 2 は RFC 2965 を参照しています。 DOM 2 仕様書は UA のセッションについての正確な動作は規定しないと言っています。
仕様書:
[2] この属性を読むと得られる値は、
cookie の名前と値の組の群を ;
で連結して一つの文字列にしたものです。
Cookie が一つもないときには、空文字列となります。
と DOM 1,2 仕様書に書いてあるのですが、 こんな説明で本当にいいのでしょうか。 これだけを読んで実装できる人なんているはずがない。
一応、 DOM 1 には更に name=value;expires=date という例が載っています。
[3] DOM 1 FE ではこの属性は読取専用ですが、 DOM 0 と DOM 2+ では書込むこともできます。 DOM 1 SE では読取専用ではなくなっていますが、 説明は DOM 1 SE とほとんど同じで、書くときの構文の説明がありません。
この属性に書くときの値は、
RFC 2965 の cookie
(>>5) とするべき (should) です。
Cookie 名が既に使用されていれば、 新しい値と cookie 属性に置きかえられます。
Cookie 属性の既定値:
max-age
が 0
なら、
当該名の cookie は削除します。
[4] >>3 で構文が不適切だと、 DOMException
SYNTAX_ERROR
が発生します。
[13] 2004-04-27 - 「高木浩光@茨城県つくば市の日記」跡地 ( 版) http://d.hatena.ne.jp/HiromitsuTakagi/20040427
携帯電話のブラウザでは、どのみち完全なPC向けWebサイト対応は期待されていないのだから、この際思い切って、document.cookie機能を搭載しないでおいたらどうか。「セキュリティを重視して危ない機能は排除した」と主張すればよい。
一部の掲示板等でdocument.cookieが使われている(cookieで覚えさせたハンドルやメールアドレスを名前欄、E-mail欄に表示するため)が、JavaScriptを使わなくともCGI側で同じことを実現できるのだから、こんな機能はなくなってもかまわないはずだ。
[6]
MathML や SVG も HTMLDocument
に相当する MathMLDocument
や SVGDocument
を持っているのですが、そいつらは cookie
属性は持っていないようです。
[24] setTimeout + document.cookie - Ci.nsIZIGOROu - Mozilla 拡張機能勉強会 ( 版) http://moz-addon.g.hatena.ne.jp/ZIGOROu/20081009/1223567665
browser c IE7 15981 Fx3 20000 Opera 9.5 19995 Safari 4 20000 Chrome 0.2 16065 まぁこの結果見ると 20,000 と言う結果が出るブラウザの方がひょっとしたらたまたまで、他のブラウザの結果が普通かもしれない。まぁその是非は置いといて少なくとも言える事は、20,000にならないブラウザは、setTimeout() に指定した関数内の処理も非同期になっていて、実行順序が保障されてないと考えられる。
[25] [whatwg] HTML Cookie API ( 版) http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2010-February/025300.html
[26] クライアントサイドの巨大なクッキーとサーバーサイドのヘッダーサイズ制限の組み合わせによるDoSについて - デー ( ( 版)) http://d.hatena.ne.jp/ultraist/20120417/1334667427
[27] JavaScriptでdocument.cookieへのアクセスを禁止する - 金利0無利息キャッシング – キャッシングできます - subtech ( ( 版)) http://subtech.g.hatena.ne.jp/mala/20120709/1341819651
[28] [whatwg] HTML Cookie API ( (Ian Hickson 著, 版)) http://lists.w3.org/Archives/Public/public-whatwg-archive/2010Mar/0068.html
[9] Cookies Settings Observations ( (Daniel Appelquist 著, 版)) http://lists.w3.org/Archives/Public/www-tag/2015Jan/0185.html
[29] Bug 28393 – Determine which cookies to include before returning. ( 版) https://www.w3.org/Bugs/Public/show_bug.cgi?id=28393
[30] Remove the storage mutex · Issue #335 · whatwg/html ( 版) https://github.com/whatwg/html/issues/335
[31] Remove the storage mutex due to lack of implementation · whatwg/html@1b918cf ( 版) https://github.com/whatwg/html/commit/1b918cf72fcbba011f83b92ab5d1f483fb1cafa3
[32] Update integration with Encoding Standard · whatwg/html@6a31c26 ( 版) https://github.com/whatwg/html/commit/6a31c26cf12e39dab1a488e75dd56c03d6786d39
[33] Cleanup origin serialization · whatwg/html@5dcc1ee ( 版) https://github.com/whatwg/html/commit/5dcc1ee2124b5e54955845790bb47f5d1351d672
[34] Define "server-based naming authority" in terms of URL · whatwg/html@da7b5ba ( 版) https://github.com/whatwg/html/commit/da7b5baf5815754cc40387452ae41e989848032f
[35] Merge effective script origin into origin · whatwg/html@8a843f2 ( 版) https://github.com/whatwg/html/commit/8a843f2169a6864a3024c4329528dccb2051d275
[36] Use USVString for document.domain/referrer/cookie · whatwg/html@8170d82 ( 版) https://github.com/whatwg/html/commit/8170d82a2fc93c8ff7981c54aa4ccafd54204552
[37] 2012-07-09 - 金利0無利息キャッシング – キャッシングできます - subtech ( ()) https://subtech.g.hatena.ne.jp/mala/20120709
[38] Actions required to mitigate Speculative Side-Channel Attack techniques - The Chromium Projects () https://www.chromium.org/Home/chromium-security/ssca
[39] Meltdown/Spectre | Web | Google Developers () https://developers.google.com/web/updates/2018/02/meltdown-spectre