クッキーに関する多くの質問を調べましたが、問題の答えが見つかりませんでした。次のシナリオがあります:
ユーザーはexample.comでログインを作成し、サブドメインfuu.exampleのみのCookieを取得する必要があります。 com。次のHTTPヘッダー部分を生成します。
Set-Cookie: name=TestUser; Domain=fuu.example.com; Path=/; secure; HttpOnly
しかし、https://fuu.example.comにリクエストを行うと、Cookieは追加されません要求。 example.comがfuu.example.com
。 example.comが.example.com
もexample.comのすべてのサブドメインについてですが、それは私が望むものではありません。
サブドメインにCookieを設定するにはどうすればよいですか?サブドメインへのリクエストにCookieが表示されません。
いや それに加えて、 (以下の更新を参照) cookieは拒否されます :fuu.example.com
は無効ですDomain値(.
で始まる必要があります、つまり.fuu.example.com
)
セキュリティまたはプライバシー違反の可能性を防ぐため、次のいずれかが当てはまる場合、ユーザーエージェントはCookieを拒否します(情報を保存しません)。
- Request-Hostは完全に修飾されたドメイン名(IPアドレスではない)で、形式は[〜#〜] hd [〜#〜]で、ここで[〜#〜] d [〜#〜]はDomain属性の値であり、[〜#〜] h [〜#〜]は1つ以上を含む文字列ですドット。
Request-Hostはexample.com
で、Domain属性値はfoo.example.com
です。しかし、リクエストホストexample.com
の形式はありません[〜#〜] hd [〜#〜] where [〜#〜] d [〜#〜]はfoo.example.com
になります。したがって、Cookieは拒否されます。
Update現在の仕様 RFC 6265 は、上記で引用されたRFC 2109を廃止し、先頭のドットを無視します。ただし、有効なドメインは同じように処理されます。
[…] Domain属性の値が "
example.com
"の場合、ユーザーエージェントはexample.com、へのHTTPリクエストを行うときにCookieヘッダーにCookieを含めますwww.example.com、およびwww.corp.example.com。 (先頭の%x2E( ".
")が存在する場合、その文字は許可されていませんが無視されますが、末尾の%x2E( ".
")は、存在する場合、属性を無視するユーザーエージェント。)[…]ユーザーエージェントはfoo.example.comからのドメイン属性が「
example.com
」または「foo.example.com
」のCookieを受け入れますが、ユーザーエージェントは「bar.example.com
」または「baz.foo.example.com
」のドメイン属性を持つCookieを受け入れません。
2つのドメインexample.com
およびfoo.example.com
は、Set-Cookieヘッダーでドメインの名前が明示的に指定されている場合にのみ、Cookieを共有できます。それ以外の場合、Cookieの範囲はリクエストホストに制限されます。
たとえば、foo.example.com
から次のヘッダーを送信した場合:
Set-Cookie: name=value
そうすると、example.com
へのリクエストに対してCookieは送信されません。ただし、次を使用する場合、両方のドメインで使用できます。
Set-Cookie: name=value; domain=example.com
RFC 2109では、先頭にドットが付いていないドメインは、サブドメインで使用できないことを意味し、先頭のドット(.example.com
)のみがサブドメイン間での使用を許可します。
ただし、最新のブラウザは新しい仕様RFC 6265を尊重し、先頭のドットを無視します。つまり、サブドメインとトップレベルドメインでCookieを使用できます。
summaryでは、example.com
から上記の2番目の例のようにCookieを設定した場合、foo.example.com
でアクセスできます。