【DAY007】javascriptでURLドメインを指定してcookieの操作がどこまでできるのか
- はじめに
- 前提
- cookieの読み書き範囲の調査
- 参照可能範囲
- 現在いる場所のドメインと指定するドメインの場所が異なる場合、書き込み不可
- ドメインを指定せずにcookieを書き込むと、そのドメインからしか見ることができない
- 参考
はじめに
そもそも、cookieでドメイン指定や操作はしない方が良い。 理由については下の記事でよくわかる。
けれども、時と場合によっては必要なこともある。
以前業務で調べたことを、覚書として残しておく。
追々調べなおして修正する予定。
前提
- cookieのpath指定はすべて「/」である。
- pathも変わるとさらにcookieの制約範囲が狭まるため。
- javascriptでcookieを与える
cookieの読み書き範囲の調査
1. トップドメイン(.com, .jp等)で指定してcookie付与は不可
document.cookie = "_testTop=hogehoge; path=/; domain=.com;";
=> 付与できない
2. ドメインで指定してcookieを付与した場合、指定した階層以下からは参照可能
参照可否の図
| 同一 | 上位 | 下位 |
| 〇 | × | 〇 |
現在の場所 test.aaa.domain.com
document.cookie = "_test=ttttt; path=/; domain=.aaa.domain.com;";
参照可能範囲
test.aaa.domain.com
tttt.aaa.domain.com
aaa.domain.com
参照不可
domain.com
現在いる場所のドメインと指定するドメインの場所が異なる場合、書き込み不可
現在の場所 test.aaa.domain.com
document.cookie = "_testAno=anotherdomain; path=/; domain=.tttt.aaa.domain.com;";
ドメインを指定せずにcookieを書き込むと、そのドメインからしか見ることができない
現在の場所 aaa.domain.com
document.cookie = "_testNoSetDomain=foobaa; path=/;";
- 設置場所
aaa.domain.com
- サブドメイン
test.aaa.domain.com
【IEの場合】、ルートドメインでcookieが発行されるとサブドメインまで読み込むことができる。
① root.com/hogehoge.htmlで以下のように設定
document.cookie = "_sun_tes_no_set_domain=noDomain; path=/"; document.cookie = "_sun_tes_no_priod=setNoDomain; domain=root.com; path=/"; document.cookie = "_sun_tes_set=setDomain; domain=.root.com; path=/";
② sub.root.com/fugafuga.htmlでcookieを確認すると、すべての値を確認可能。