25 Mar 2013

document.cookie から読み書きできるのはなにか

  • document.cookie はそのドキュメントに関連するクッキーの読み書きができる
    • document.cookie を呼ぶ script がサードパーティーのドメインからロードしたものでも同様
    • ブラウザのクッキー設定を辛くしている場合はその限りではない
    • create* メソッドで動的に作られた場合など, ドキュメントのロケーションが空だったり定かでない場合も自由な読み書きは不可?
  • 書き込みの場合任意のドメインのクッキーを設定できるが, 実際に送信されるか・保存されるかはブラウザの設定次第

こう思っているのだけど本当にそうなのか確信がない (仕様で定義されている or コードにそう書いてあった). また そのドキュメントに関連するクッキー の定義がいまいち曖昧. ファーストパーティのドメインのクッキーだけなのか, 許可している場合はサードパーティーのクッキーも OK なのか (経験則としては後者なのだが).

つまりサードパーティーのスクリプトでも, そのドキュメントに関連するクッキーを読めるし, 任意のドメインのクッキーをセットできると思っているのだが, 本当にそうだっけという確証がない. サードパーティーのスクリプトでもファーストパーティの DOM を自由にさわれるので, クッキーも読み書きできても筋が通っている気がしている.

まずは仕様を読んで調査: