web-dev-qa-db-ja.com

IE iframeで失われる11のファーストパーティセッションCookie

Iframeで行う支払いの詳細を確認するために、ユーザーを一連のサードパーティページに送信するサイト(www.example.com)があります。最初に、www.example.comのローカルページがiframeにロードされ、ユーザーはサードパーティのURLにリダイレクトされます。ユーザーがサードパーティの手順を完了すると、iframe内のサイト(www.example.com)のページにリダイレクトされます。

これは、テストしたすべてのブラウザで機能します。ただし、IE 11、Cookieが失われているようです。Windows7と8.1の両方で、デスクトップモードと「メトロ」モードの両方で、問題はすべてのバージョンにあります。

ユーザーがサイトを閲覧するとき、セッションCookieを設定します。これは、iframeに最初に読み込まれたファーストパーティページに正しく送信されます。ただし、ユーザーがこのiframeでサードパーティのページを経由すると、セッションCookieは次のリクエストでは送信されません。

IE 11のプライバシー設定を最低値に設定すると、この問題はなくなり、期待どおりに動作します。

私がこれまでに明らかにしたすべての潜在的なソリューションは、P3Pヘッダーに関連しています。有効で正しいP3PヘッダーとXMLポリシーファイルが設定されており、この問題はIE 11でのみ発生します。


更新: JSを使用して設定された他のいくつかのCookieがあります。これらはすべて期待どおりに持続しています。違いは、有効期限(JS Cookieの場合は1年、セッションCookieの場合は1か月)、ドメイン(JS Cookieの場合は明示的に「example.com」、セッションCookieの場合は空)、および「HTTPのみ」(JSの場合はfalse cookie、セッションcookieに該当)。

セッションCookieのJS Cookieに従ってこれらのオプションをすべて設定しようとしましたが、違いはありませんでした。


更新2:さらにテストした後、この問題を再現するテストケースを作成できませんでした。ただし、ライブコードでテストしようとする追加のCookieは、動作するJS Cookieとまったく同じコードで設定されている場合でも、破損しているように見えます。要するに;動作するCookieと動作しないCookieのパターンはまだ見つかりません。

興味深い可能性があることに注意してください。Cookieは削除されておらず、最終リクエストに送信されていないだけです。別のページがロードされると、Cookieが魔法のように再表示されて送信されます。これは、これがiframeとP3Pを取り巻くバグだと思うようになります。


アップデート3(3日目): IE 11によるCookieの処理は、私を混乱させ続けています。Microsoftの迷路をさらに進むと、私はその変化する壁の中でさらに失われます。そして、ここには幽霊がいます。あらゆる夢のようなクリーチャーに織り込まれた半夢のようなセキュリティポリシーの断片。しかし、1時間ごとに、その近さを知っているだけで、より快適になります。

66
Jaik Dean

Internet Explorer 11で同様の問題が発生し、https経由のリダイレクト後にセッションCookieが失われました。

リクエストチェーンは次のようになりました。

/への初期リクエスト->セッションCookieセット->外部URLへリダイレクト->redirect back(セッションCookieが失われました)

問題は、 RFC952 に基づく無効なホスト名が原因で、テストサーバーのURLにアンダースコアが含まれていました。 URLがRFC952に準拠していない場合、Internet Explorerはhttps経由のリダイレクトでセッションCookieをサイレントにドロップするようです。アンダースコアの代わりにダッシュを使用すると、すべてが期待どおりに機能しました。

元のソリューションは、Update 2セクションにありました 2004年のasp.netブログ投稿 関連するMicrosoftバグチケット- ここ

これが誰かの助けになることを願っています。

8
OakNinja

IE7互換モードが新しいページで使用されると、セッションCookieが失われることがよくあります。同じことがiframeにも当てはまると思います。 iframeは親ページとは異なるX-UA-Compatibleヘッダー値を送信していますか、それともセッションの初期とは異なりますか?多分あなたのセッションはIE = Edgeで始まり、iframeページはIE = 7に設定します。その場合、IEは互換モードページおよびセッションCookieの新しいIE PIDを頻繁に起動するようです(ただし、転送されないようです)。

1
Ray Darrow