実際Cookieを利用したプログラムを作ると疑問に思えることも出てきます。その一つとして、Cookieが届く範囲は?というものがあります。実際にプログラムを書く場合にどうやって使うの?という場面も多いと思います。いうことを実験してみました。お互いサーバー(ホスト)からCookieを書き込んで、読めるかどうかを実験しました。Cookieの仕様には実際にどのように書かれているかをチェックしてみたいと思います。Cookieを送るようなことを書いています。「anvil.acme.com」でも「shipping.crate.acme.com」でもOKであるということですよね。Cookieの実験結果はどうなったか?で、これらのルールを実際にCookieに適用して調べてみました。下記のような条件を想定していただけるとわかりやすいと思います。書き込みを行った「domain」や「path」が指定されることになります。「domain=ABC.DOMAIN1.COM」「path=/program/」が指定されたのと同じ状態ということです。書き出したプログラムがある場所および「呼び出場所2」のみということになりました。Cookieを書き出すプログラムだと思ってください。)場所1では「domain」はマッチしていますが「path」がマッチしていません。場所2「/program/under/」の上位となるので、下位である「/program/under/」から呼び出しが可能になります。場所3では「domain」がマッチしていません。次に、ドメインを指定せずに、Pathのみ指定してみました。「domain=ABC.DOMAIN1.COM」となります。場所1では「domain」「path」共にマッチています。場所2では「domain」がマッチ、「path=/」は上位なので読み出し可となります。場所3では「domain」がマッチしていません。Cookieを読むことができません。思っていたのですが、読めないとは不思議な気もしますよね。「domain=XYZ.DOMAIN1.COM」「path=/」を指定した場合はどうなるでしょうか?この場合は、いずれの場合も読み込みができません。別のドメインが指定されていると解釈されるからだと思います。「domain=XYZ.DOMAIN1.COM」と指定した場合にはCookieの書き込みが行われないようです。ABCというサーバーからXYZという別のサーバー)にCookieを渡したい場合はどうするのでしょうか?「domain=.DOMAIN1.COM」「path=/」を指定してみました。場所1~場所5までで、Cookieの呼び出しが可能となりました。違うため、Cookieの書き込みが行われません。違うホストの特定のパスでCookieの読み出しを可能にできます。ん、、ややこしいですね。最後に、「domain=DOMAIN2.COM」というように、別のドメインを指定した場合です。仕様を読んでいるときにはそれも可能かと思ったのですが、実際は不可能です。Cookieというのは書き込み、読み込みができないような仕組みになっています。場所6、7に対してCookieのやり取りができないとの結論になりました。個人的には明示的にDOMAINを指定するのだから、可能だといいなぁ、、、と思ったのですが。Cookieを読み込むことが可能であることは以上の実験でわかったと思います。次のような場合には上位とみなされるということです。指定した場合、ディレクトリが上下関係でないにもかかわらず下記結果となる。単純に文字列を上から比較してマッチしているかどうかしか見ていないということになります。(これは、そのような仕様であるとのことがかかれてます。逆にドメインはしっかり全てマッチしているかどうかチェックしているようです。Cookieを読める範囲を上手に操作することができそうです。指定することで、下記のようにCookieの読込制御が可能です。(読込可能)Cookieについての色々です残念ならが、ここで実験したプログラムは公開していません。このドメインにホストを2つ作ることができないからです。ホスト間でCookieをやり取りするような環境でプログラムを組むことは稀だとは思います。なんていうことも聞きます。Cookieの使い方は気をつけないと、、、と実験して思いました。奥の深い分野ですよね、、、私もまだまだ勉強中です。