cookieの仕様、domain属性の優先度について質問です。

コンテンツで使うため、jsを使って「c01.webserver.ne.jp」(仮名)に「datafile = 500」というcookieを保存していたのですが、他のサブドメインでもこのcookieを使うことになり、「webserver.ne.jp」にも「datafile = 500」というcookieを保存しました。
ここで、どうなるのかなと試しに「c01.webserver.ne.jp」に「datafile = 100」、「webserver.ne.jp」に「datafile = 500」という違う数値を設定して表示してみたところ「c01.webserver.ne.jp」では「datafile = 500」と表示されました。
プログラムの標準的な考え方では「datafile = 100」になると思ったのですが…

domain属性の優先度(どちらが強いか)はどういう仕様になっているのでしょうか?資料(できれば日本語…)があればURLなど教えてください。

・書いたサーバ名は仮名ですが、頭のアルファベットはテスト時と同じです。cとw。
・心配しているのは例えばサーバが「w01.center.ne.jp」「center.ne.jp」だった場合はこの結果が逆になってしまうのかということです。無ければいいのですが。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/07/29 17:01:51
  • 終了:2014/08/04 10:57:21
id:tukihatu

また500文字制限に引っかかった…長々書きすぎですかそうですね。
・「c01.webserver.ne.jp」と「webserver.ne.jp」なのでアルファベット後順?それとも後方一致で短いほうとか?
・pathのほうは「/html/」よりも「/html/file/」のほうが強いのに、なぜdomain属性は逆なのか。(ぶれすぎじゃないですかちょっと)
・それにpathのほうは資料がどっちゃり出てくるのに、なぜdomain属性は(普通つかわないもんね、しかたないね)
・ええ、二つ同じ名前が存在すること自体アカン。というお叱りのお言葉はごもっともです。

回答(1件)

id:standard_one No.1

standard_one回答回数252ベストアンサー獲得回数232014/07/30 12:15:12

ポイント100pt

「domain属性の優先度」という考え方はちょっと違うかなと思いますが、先に回答ページを貼っておくと、これです。
http://www.imymode.com/exp/cookie.html
こんなにたくさん読みたくないよ!というならこちら
http://qiita.com/Kokudori/items/02af57c20ff62cf9eec6

質問の文面から察するに「知っている範囲の知識に現象を当てはめて理解したい」という印象を受けます(実際にそうであるかは別として私の主観)。
そういう思考方法自体は否定しませんが、であれば知識を相当広げる必要があります。
例えばドメインの評価順序です。
ドメインにはルートドメインというものがあり、これが最初に評価されます。
文字でいうと .(ピリオド)です。
これはドメインの末尾に付き(ブラウザでは表示されませんが)、そこから前方に向かって解決されていきます。
質問者さんの強い弱いという概念に当てはめるなら何の矛盾もない強さになるわけです(今回の件は強弱ではなくクッキーの範囲指定をデフォルトで済ませているからだと予想していますが)。
このあたりはDNSについて勉強すると身に付く部分です。

蛇足ですが、何でもかんでも知っている人間を目指すよりは都度調べる方が楽だと思うので、「何を調べるべきか」にピンとくるような物の考え方を練習する方がオススメです。

id:tukihatu

ありがとうございます。勉強がんばります!
ドメインは末尾からなんですよね。だから限定的に絞ったサブドメの数値より、全体的にかけた数値のほうが表示されたのが疑問だったのですが、最初に評価したものを取得する仕様なだけなんですねきっと…

2014/08/01 10:40:17
id:standard_one

いえ、最初に評価したものだったら全部ルートドメインについてしまいます。クッキーを「どのドメインに」という指定はしていますか?指定しているとしてサブドメインを固定しない設定にしていますか?

2014/08/06 10:50:15
  • id:psne
    http://www.hcn.zaq.ne.jp/___/WEB/RFC6265-ja.html
    ドメインの場合、たとえば
    「hoge1.example.com」や「hoge2.example.com」のように前方の文字列が変化しますが、
    「example.com.hoge3」とはなりません。ですから、後方で一致させる仕様になっています。
    >>
    ドメイン文字列は文字列の尾部に一致する。
    <<

    5.1.2. 正準化ホスト名、5.1.3. ドメイン照合 辺りで定義されています。

    「.example.com」が他のサブドメインとcookieを共有できるのは、こういった決まり事があるためです。
  • id:psne
    ※書き忘れ
    http://blog.tokumaru.org/2011/10/cookiedomain.html
    上記URLは別件ですが、どちらのドメインが優先されるかはブラウザの実装によって差がある部分かもしれません。あいまいですみません。

    >>
    ・ええ、二つ同じ名前が存在すること自体アカン。というお叱りのお言葉はごもっともです。
    <<
    時々ad.example.comと分けてある場合もありますので…
  • id:tukihatu
    ありがとうございます!コメントでなくてもよかったのに^_^
    ブラウザ(絶対IE)によって曖昧だと怖いですね。
  • id:psne
    優先順位の部分の情報が不十分な為、コメントとさせて頂きました。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません