Document に関連付けられたクッキーを読み取り/書き込みします。これは実際のクッキーの値に対するゲッターとセッターとして動作します。
Edgeでは、ローカルではクッキーは取り扱えないようです。
クッキーを読み込む:
クッキーを書き込む:
Document | Document。 |
---|
セミコロンで区切られたクッキーのリストです(つまり key=value のペア)。なお、それぞれの key および value の周囲にはホワイト スペース(空白やタブ文字)を置くことができます。実際のところ、RFC 6265 ではそれぞれのセミコロンの後に空白1文字を入れることを必須としていますが、一部のユーザー エージェントはこれに従っていません。
key=value の形式の文字列です。なお、この方法を使用して一度に設定・更新できるクッキーは、一つだけです。
オプションとして次に挙げる値を設定することができます。key と value のペアの後にセミコロン「;」で区切って設定することで、クッキーを設定・更新することができます。
key:
path
メモ: Gecko 6.0 以前では、引用符付きのパスは引用符が文字列を囲む区切り文字ではなく、文字列の一部であるかのように扱われます。これはすでに修正されています。
domain
メモ: ドメインは JavaScript のオリジンと一致している必要があります。外部ドメインへのクッキーの設定は暗黙に無視されます。
max-age
expires
ユーザーのプライバシーを考慮するのであれば、ブラウザーの有効期限の管理に頼るのではなく、ウェブ アプリケーションの実装で指定した期間の経過後にクッキーを無効化することが重要です。多くのブラウザーはユーザーがクッキーを無期限に設定することができますが、これは安全ではありません。
値の形式について知りたい方は、Date.toUTCString() をご覧ください。
secure
samesite
lax
または strict
です。
strict
| 通常のリンクを追う場合を含め、ブラウザーがすべてのサイト間閲覧コンテキストの対象サイトに向けてクッキーを送信することを防ぎます。 |
---|---|
lax
| トップ レベル ナビゲーションで GET リクエストの場合のみ、クッキーを送信します。これはユーザーのトラッキングに効率的でありながら、多くの CSRF 攻撃を防ぐことができます。 |
クッキーの値の文字列に encodeURIComponent() を使用すると、文字列に(クッキーの値で許可されない)コンマ、セミコロン、ホワイトスペースを使用していないことを確認できます。
ユーザー エージェントの実装によっては、以下のクッキーの接頭辞に対応しています。
__Secure-
__Host-
ダッシュ「-」は接頭辞の一部とみなされます。
これらのフラグは secure 属性と一緒の場合のみ設定できます。
メモ: 上記のコードに見られるように、document.cookie はネイティブのセッター及びゲッターを持つアクセサー プロパティであり、値を持つ データ プロパティではありません。書き込んだものと読み込んだものは同じにはならず、常に JavaScript インタープリターに仲介されます。
クッキーを設定してから、test2 という名前のクッキーを取得:
JavaScript:
document.cookie = "test1=Hello"; document.cookie = "test2=World"; const cookieValue = document.cookie .split('; ') .find(row => row.startsWith('test2')) .split('=')[1]; function alertCookieValue() { alert(cookieValue); }
HTML:
<button onclick="alertCookieValue()">Show cookie value</button>
¶省く
document.cookie="test1=Hello;"; D=document.cookie; //="test1=Hello" document.cookie="data=10"; D=document.cookie; //="test1=Hello; data=10"。全てのクッキーが取得される ND=new Date().getTime(); //現在の時間を取得して、ミリ秒にする。 Dt=new Date(ND+1000*10).toGMTString(); //現在の時間+10秒 document.cookie="data=20; expires="+Dt; //有効期限付きで書き込み
後に以下のを繰り返す
D=document.cookie; //="test1=Hello; data=20" … D=document.cookie; //="test1=Hello"
更に、
Dt=new Date(0).toGMTString(); //過去の時間にして、 document.cookie="test1=20; expires="+Dt; //クッキー削除ができる。 D=document.cookie; //=""
HTML: |
⯈スクリプト組み込み: |
JavaScript: | |
JavaScript: | |
表示内容: |
表示内容: |