質問が 2 つあります。Cookie でドメインを.example.com
(先頭にドットを付けて) として指定すると、すべてのサブドメインで Cookie を共有できると理解しています。
(サブドメインなしで)subdomain.example.com
作成された Cookie にアクセスできますか?example.com
www
example.com
で作成された場合、サブドメインなしでwww
Cookie にアクセスできますかsubdomain.example.com
?
ベストアンサー1
次のように Cookie を設定すると:
Set-Cookie: name=value
クッキーはリクエストドメインにのみ適用され、他のサブドメインではなく、まったく同じドメインへのリクエストに対してのみ送信されます。(「ホストのみ」Cookie とは何ですか?)
2 つの異なるドメイン (例:example.com
とsubdomain.example.com
、またはsub1.example.com
と) は、ヘッダーに 属性が存在するsub2.example.com
場合にのみ Cookie を共有できます。domain
Set-Cookie: name=value; domain=example.com
ドメイン属性はドメイン一致有効であるためには、リクエスト URL が必要です。つまり、基本的には、リクエスト ドメインまたは「親」ドメインである必要があります。したがって、これは質問の両方の例と、2 つの別々のサブドメイン間の共有に適用されます。
この Cookie は、 およびのサブドメイン( などのネストされたサブドメインを含む)example.com
に送信されます。(やなど、Cookie の範囲とブラウザによって送信されるタイミングを制限できる他の属性があることに留意してください)。example.com
subsub.subdomain.example.com
path
Secure
ドメイン マッチングの仕組み上、 と がsub1.example.com
Cookiesub2.example.com
を共有する場合は、 とも Cookie を共有することになりますsub3.example.com
。
参照:
- www と no-www および Cookie
- クッキーの設定: 試すことができるサイト(免責事項:この質問のために私が開発しました)
属性の先頭のドットに関する注意domain
: 初期のRFC 2109、先頭にドット ( domain=.example.com
) が付いたドメインのみがサブドメイン間で使用できます。ただし、これはトップレベル ドメインと共有できないため、古い仕様では要求されたことは不可能でした。
しかし、新しい仕様ではRFC 6265先頭のドットは無視されます。つまり、トップレベル ドメインだけでなくサブドメインでも Cookie を使用できます。一部のブラウザでは、ホストのみの Cookie と他の Cookie を区別するために開発者ツールに先頭のドットが表示されますが、これは表示目的のみです。