web-dev-qa-db-ja.com

Internet Explorerは一部のドメインのCookieを無視します(Cookieの読み取りまたは設定はできません)

私はサイトを持っています、例えばexample.com。ユーザーは独自のサブドメイン(1ユーザー-1サブドメイン)を設定し、独自のスクリプトをアップロードできます。 http://somedomain.example.com/xyzzy.php/www/somedomain/xyzzy.phpにマッピングされます

現在、これらのドメインの一部では、Internet Explorer 7はCookieを受け入れない/受け入れることができません。 Fiddlerで確認:サーバーはSet-Cookie応答を正しく送信しますが、CookieはIE-JSまたは開発者ツールでは表示されません。リクエストに応じて、IE7はCookieヘッダーも送信しません。

Cookieはユーザーのドメインに設定され(例:somedomain.example.com)、パスは/、異なる有効期限オプション(過去、未来、現在、「0」)を試しましたが、HttpOnlyではなく、安全ではありません。

FF、Opera、Safari、およびChromeはすべて問題なく動作します。

なぜIEはCookieを無視しますか?

59
Piskvor

サブドメインの1つがアンダースコアを使用していますか? IEには、 RI RFC に従わないサブドメインからのCookieの受け入れに問題があります。

106
u07ch

RFC1035 (ドメイン名-実装と仕様)によると:

[ドメイン名]は、文字で始まり、文字または数字で終わる必要があり、内部文字として文字、数字、ハイフンのみを使用する必要があります。

一部のドメインにはアンダースコア( "_")が含まれていたことがわかりました:some_domain.example.com。これはRFCに違反していますが、他のすべてのブラウザーは正常に動作します。

MSIE 7、アンダースコアのあるドメインでは、そのホストのすべてのCookieを静かにドロップし、新しいCookieの受け入れを拒否します。

唯一の解決策は、RFC準拠のドメインを使用することです(すべての「_」を「-」に置き換え、RewriteRuleを設定して、トラフィックが準拠ドメインにリダイレクトされるようにします)。

51
Piskvor

この問題は、ドメイン名の下線だけでなく、数字で始まるドメイン名にも当てはまります。したがって、1aaaaaaa.tldは実際には非標準のドメイン名であり、IEはCookieを拒否します。

www2.1aaaaaaa.tldのみを使用して解決し、1aaaaaaa.tld内のwww.1aaaaaaa.tldおよび.htaccessホストの書き換えルールを追加しました。それが本当に標準に準拠したソリューションとして適格であるかどうかはわかりません....とにかく、それはクッキーの問題を解決したようです。

それが誰かを助けることを願っています!

13
Tomas Ullberg