[解決済み] ブラウザのCookieドメインはどのように機能するのですか?
質問
ドメイン/サブドメインCookieの奇妙な問題が発生したため、ブラウザがCookieをどのように扱うかを知りたいです。もし、ブラウザによってやり方が違うなら、その違いも教えてもらえると助かります。
言い換えれば、ブラウザがクッキーを受け取ったとき、そのクッキーにはドメインとパスが付加されていてもよい(MAY)。あるいは、そうでない場合、ブラウザはおそらく何らかのデフォルトをそれらに代用します。質問1:それらは何ですか?
その後、ブラウザはリクエストを行おうとするとき、クッキーをチェックし、そのリクエストのために送信すべきクッキーをフィルタリングします。これは、リクエストのパスとドメインに照合することで行われます。質問2:マッチングルールとは何ですか?
追加しました。
なぜこのような質問をするかというと、いくつかのエッジケースに興味があるからです。例えば
-
に対するクッキーは、このままでは
.example.com
に使えるwww.example.com
? -
に対するクッキーは作成されるのでしょうか?
.example.com
に使えるexample.com
? -
に対するクッキーは作成されるのでしょうか?
example.com
に使えるwww.example.com
? -
に対するクッキーは作成されるのでしょうか?
example.com
に使えるanotherexample.com
? -
ウィル
www.example.com
にクッキーを設定することができます。example.com
? -
ウィル
www.example.com
にクッキーを設定することができます。www2.example.com
? -
ウィル
www.example.com
にクッキーを設定することができます。.com
? - などなど。
2を追加しました。
また、どのようにクッキーを設定すればよいのか、どなたかご教示ください。
-
のどちらかによって設定することができます。
www.example.com
またはexample.com
; -
の両方からアクセス可能です。
www.example.com
とexample.com
.
解決方法は?
がありますが
RFC 2965
(
Set-Cookie2
はすでに廃止されていました。
RFC 2109
を参照)。
べきである
はクッキーを定義していますが、ほとんどのブラウザはこれを完全にサポートしておらず、ただ
Netscape社によるオリジナル仕様
.
という区別があります。
ドメイン
属性の値と有効なドメインがあります。
Set-Cookie
ヘッダーフィールド、後者はその属性値の解釈である。RFC2965によると、以下のようになるはずです。
- もし セット-クッキー ヘッダーフィールド はしません。 があります。 ドメイン 属性の場合、有効なドメインはリクエストのドメインとなります。
-
がある場合
ドメイン
属性が存在する場合、その値が有効なドメインとして使用されます (その値が
.
はクライアントによって追加されます)。
有効なドメインを持つことで、さらに ドメインマッチ そうでない場合、クッキーは修正されます。そうでなければ、クッキーは修正されます。同じルールが、リクエストで送信されるクッキーの選択にも適用されます。
この知識をご質問の内容に当てはめると、以下のようになります。
-
を使ったクッキー
Domain=.example.com
意志 使える www.example.com -
とのクッキー
Domain=.example.com
意志 使える 例.com -
とのクッキー
Domain=example.com
に変換されます。.example.com
というように は にも使用できます。 www.example.com -
とのクッキー
Domain=example.com
意志 ない に使える anotherexample.com - www.example.com 意志 にクッキーを設定することができます。 例.com
- www.example.com ウィル ない にクッキーを設定することができます。 www2.example.com
- www.example.com ウィル ない にクッキーを設定することができます。 .com
また、Cookieを設定し、読み取るには、以下のようにします。
www.example.com
と
example.com
に設定します。
.www.example.com
と
.example.com
をそれぞれ作成します。しかし、最初の(
.www.example.com
) は、そのドメイン以下の他のドメインにしかアクセスできなくなります (例.
foo.www.example.com
または
bar.www.example.com
) ここで
.example.com
は、以下の他のドメインからもアクセスすることができます。
例.com
(例)
foo.example.com
または
bar.example.com
).
関連
-
[解決済み] 負の配列サイズ例外
-
[解決済み] HTTP GET(リクエストボディ付き
-
[解決済み] jQueryでクッキーを設定/解除するにはどうすればよいですか?
-
[解決済み] Access-Control-Allow-Origin複数オリジンのドメイン?
-
[解決済み] Internet ExplorerのIFRAMEでCookieがブロックされる/保存されない
-
[解決済み] なぜCSRF防止トークンをクッキーに入れるのが一般的なのですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】Cookieに使用できる文字は何ですか?
-
[解決済み] なぜCache-Control属性はリクエストヘッダ(クライアントからサーバーへ)に送信されるのですか?
-
[解決済み】セッションは本当にRESTfulnessに違反するのか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Google ChromeでSPDYを無効にする方法
-
[解決済み] updateとdeleteのHTTPステータスコード?
-
[解決済み] Cache-Control: max-age=0とno-cacheの違いは何ですか?
-
[解決済み] HTTPファイルアップロードの仕組みを教えてください。
-
[解決済み] ファイルのダウンロードにContent-Type: application/octet-streamは必要ですか?
-
[解決済み] HTTPリダイレクト:301(永久)と302(一時)の比較
-
[解決済み】REST APIでPATCHとPUTのどちらを使うべきですか?
-
[解決済み】HTTPヘッダ(キャッシュコントロール用)を設定する方法は?)
-
[解決済み】Accept* HTTPヘッダのq=0.5とは何ですか?
-
[解決済み] Cache-Control: privateとは何ですか?