document.cookie
概要

スクリプト上でdocument.cookieを参照すると、現在のページから利用可能なCookieが文字列として返される。複数のCookieが存在する場合は「名前=値」の組がセミコロンで区切られた一つの文字列として得られる。特定のCookieだけを抜き出す機能はないため、目的の値を取得するには返された文字列を分割して解析する処理が必要になる。
Cookieを追加・更新するには、document.cookieに文字列を代入する。既存の同名Cookieがあれば更新され、なければ新たに追加される。通常の変数とは異なり、代入によって他のCookieが消えることはない。
代入する文字列には、名前と値のほかに様々な属性を付加できる。expires属性またはmax-age属性で有効期限を、path属性で有効なURLの範囲を、domain属性で対象ドメインを指定する。secure属性を付けるとHTTPS接続時のみ送信され、samesite属性は他サイトからのリクエスト時にCookieを送信する条件を制御する。Cookieを削除したい場合は、有効期限を過去の日付に設定するのが一般的な方法である。
WebサーバがHTTPレスポンスのSet-Cookieヘッダを通じてHttpOnly属性を付与したCookieはdocument.cookieから参照も変更もできない。JavaScriptによるCookie窃取への対策として用いられ、セッションIDなどクライアント側で参照・操作されたくない情報に付与されることがある。document.cookieから読み取れるCookieの範囲はそれ以外に限られる。
CookieはHTTPのステートレスな性質を補う仕組みとして1994年に当時の米ネットスケープ(Netscape)社が導入し、動的なWebサイトを構築する基盤として普及した。近年ではプライバシー保護の観点からサードパーティCookieへの制限が強まっており、ブラウザの仕様によって期待通りに動作しない場合もある。また、Cookieは文字列として管理されるため複雑なデータの保存には不向きであり、大規模なデータをブラウザ側に保存したい場合はlocalStorageやsessionStorageなどのWeb Storage APIが使われることが多い。