54

Cookie に関する多くの質問を調べましたが、問題に対する回答が見つかりませんでした。次のシナリオがあります。

ユーザーはexample.comでログインを作成し、サブドメインfuu.example.comに対してのみ Cookie を取得する必要があります。次の HTTP ヘッダー部分を生成します。

Set-Cookie: name=TestUser; Domain=fuu.example.com; Path=/; secure; HttpOnly 

しかし、https://fuu.example.comにリクエストを送信すると、リクエストに Cookie が追加されません。example.comfuu.example.com. _ example.comがexample.com.example.comのすべてのサブドメインに対してもCookie を設定する可能性があることは知っていますが、それは私が望むものではありません。

サブドメインの Cookie を設定するにはどうすればよいですか? サブドメインへのリクエストに Cookie が表示されません。

4

3 に答える 3

52

いいえ。それに加えてfuu.example.com、無効なドメイン.値です(つまり、で始まる必要があります.fuu.example.com(以下の更新を参照) Cookie は拒否されます。

セキュリティまたはプライバシー違反の可能性を防ぐために、ユーザー エージェントは、次のいずれかに該当する場合、Cookie を拒否します (その情報を保存してはなりません)。

  • request-host は完全修飾ドメイン名 (IP アドレスではない) で、形式はHDです。DDomain属性の値で、 Hは 1 つ以上のドットを含む文字列です。

request-host はexample.comで、Domain属性の値はfoo.example.comです。しかし、要求ホストには、 Dが となるexample.com形式HDがありません。したがって、Cookie は拒否されます。foo.example.com


更新上記のRFC 2109 を廃止し    た現在の仕様RFC 6265は、先頭のドットを無視します。ただし、有効なドメインは同じように処理されます。

[…] Domain 属性の値が " " の場合、ユーザー エージェントはexample.comwww.example.com、および www.corp.example.comexample.comへの HTTP リクエストを作成するときに Cookie ヘッダーに Cookie を含めます。(先頭の %x2E (" ") が存在する場合、その文字が許可されていなくても無視されますが、末尾の %x2E (" ") が存在する場合、ユーザー エージェントはその属性を無視することに注意してください。)..

[…] ユーザー エージェントはfoo.example.comから example.com" " または" " のドメイン属性を持つ Cookie を受け入れますが、ユーザー エージェントは " " または" "のドメイン属性を持つ Cookie を受け入れません。foo.example.combar.example.combaz.foo.example.com

于 2011-03-10T10:38:12.693 に答える
17

2 つのドメインは、ドメインが Set-Cookie ヘッダーで明示的に指定されている場合にのみ Cookie を共有できますexample.comfoo.example.comそれ以外の場合、Cookie の範囲は要求ホストに制限されます。

たとえば、 から次のヘッダーを送信したとしますfoo.example.com

Set-Cookie: name=value

そうすると、 へのリクエストに対して Cookie は送信されませんexample.com。ただし、以下を使用すると、両方のドメインで使用できます。

Set-Cookie: name=value; domain=example.com

RFC 2109 では、先頭のドットのないドメインは、サブドメインで使用できないことを意味し、先頭のドット ( .example.com) のみがサブドメイン全体で使用できることを意味していました。

ただし、最新のブラウザーは新しい仕様の RFC 6265 を尊重し、先頭のドットを無視します。つまり、トップレベル ドメインだけでなくサブドメインでも Cookie を使用できます。

要約すると、上記の の 2 番目の例のように Cookie を設定すると、 からexample.comアクセス可能foo.example.comになり、その逆も同様です。

詳細については: https://stackoverflow.com/a/23086139/5466401

于 2016-11-15T07:50:07.307 に答える