私はクッキーについてのいくつかの基本的なことを見逃しているに違いありません。localhostで、サーバー側にCookieを設定し、ドメインをlocalhost(または.localhost)として明示的に指定した場合。一部のブラウザではCookieが受け入れられないようです。
Firefox 3.5: FirebugでHTTPリクエストを確認しました。私が見ているのは:
Set-Cookie:
name=value;
domain=localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
または(ドメインを.localhostに設定した場合):
Set-Cookie:
name=value;
domain=.localhost;
expires=Thu, 16-Jul-2009 21:25:05 GMT;
path=/
いずれの場合も、Cookieは保存されません。
IE8:追加のツールを使用しませんでしたが、後続のリクエストでCookieが返送されないため、Cookieも保存されていないようです。
Opera 9.64: localhostと.localhostの両方が機能しますが、[設定]でCookieのリストを確認すると、ドメインはlocalhostの下にリストされていても(リストのグループ化で)localhost.localに設定されます。
Safari 4: localhostと.localhostはどちらも機能しますが、設定では常に.localhostとしてリストされます。一方、明示的なドメインのないCookieは、ローカルホスト(ドットなし)として表示されます。
ローカルホストの問題は何ですか?このような多くの不整合があるため、ローカルホストに関連するいくつかの特別なルールが必要です。また、ドメインの前にドットを付ける必要がある理由は私には完全にはわかりません。RFC 2109は、次のように明示的に述べています。
Domain属性の値にドットが埋め込まれていないか、ドットで始まっていません。
なんで?この文書は、セキュリティで何かをしなければならないことを示しています。私は仕様全体を読んでいないことを認めなければなりません(後で読むかもしれません)が、それは少し奇妙に聞こえます。これに基づいて、ローカルホストにCookieを設定することは不可能です。