web-dev-qa-db-ja.com

新しいタブをターゲットとするリンクがクリックされたときに(最初のリクエストで)IE11がセッションCookieを送信しない

IE11から最初の新しいタブ(ターゲット_blank)を開くときにセッションを保持するのに問題があります。

IE11のすべてのインスタンスを閉じてから、新しいブラウザーを開いてテストWebページ(default.aspx)に移動すると、ページはセッションに値を保存し、ページにセッションIDを表示します。ページを更新しても、セッションIDは同じままです。このページには、_blankのターゲットを持つそれ自体(default.aspx)へのリンクがあります。このリンクをクリックすると新しいタブが開きますが、セッションIDが異なります。次に元のウィンドウを更新すると、セッションIDが新しいウィンドウと一致します。

<%@ Page Language="C#" AutoEventWireup="true" Inherits="System.Web.UI.Page" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
<% Session["StoredValue"]="Test"; %>

<div>SessionID: <%=Session.SessionID%></div>

<a href="/default.aspx" target="_blank">New Window</a>
<a href="http://www.google.com" target="_blank">3rd Party Window</a>

</body>
</html>

この問題は、新しいドメインで開かれた同じドメインの最初のウィンドウでのみ発生するようです(target = "_ blank"とCTRLを押しながらリンクをクリックすることで問題を確認しました)。

  • FiddlerでCookieトラフィックを監視すると、セッションCookieがdefault.aspxからの最初のリクエストで正常に送信されていることがわかります。リンクをクリックして新しいタブでページを開くと、リクエストヘッダーでセッションCookieが送信されません。
  • ブラウザを再起動してテストページに移動し、新しいタブを手動で開いてリンク先を貼り付けた場合、Cookieはリクエストヘッダーに正しく送信され、新しいタブからのセッションは元のタブと期待どおりに一致します。
  • ブラウザを再起動し、テストページに移動して、テストページの_blankターゲティングリンクからgoogleを開き、リンクをクリックして新しいタブでテストページを開くと、リクエストヘッダーとセッションでCookieも正しく送信されます新しいウィンドウから、期待どおりに元のウィンドウと一致します。

これはクライアント側の問題であると思いますが、サイトはWindows Server Standard 2008 R2から実行していますSP 1(また、4.5のみがインストールされている場合も試してみました)。

クライアントは、IE11(11.0.9600.16476)を実行しているWindows 7 64ビットです。 IE11からWindows 7を実行している他のマシンで問題を確認し、デスクトップモードのWindows 8からのIE10では問題がないことを確認しました。 ChromeおよびFirefoxですべてが期待どおりに動作します。

次の場合でも問題が解決しないことを確認しました。

  • セキュリティを中高から中へ移動
  • 保護モードを無効にする
  • プライバシーを変更してすべてのCookieを受け入れる
  • ローカルイントラネットまたは信頼済みサイトゾーンのWebサイトリストにサイトを追加します
  • 情報が収集または使用されないことを示すP3Pコンパクトプライバシーポリシーを応答ヘッダーに設定します。
  • 応答ヘッダーにP3Pコンパクトプライバシーポリシーを設定します。これは通常、IEの過去のバージョンのiframe内でサードパーティのCookieを許可するために受け入れられます。
  • WebサイトのASP.NETセッション状態設定をcookieless = "UseCookies"または "false"に変更するか、属性を完全に削除します(ASP.NET State Server)。

何か案は?他の誰かがこの問題または同様のものを見たことがありますか?

15
user3179118

マイクロソフトによれば、これはアクティブなバグです。これを修正するサーバー側の方法は明らかにありません。

バグレポートへのリンク

4
Mark Pearson

解決策ではなく手がかり:私たちは同様の動作に気づき、それをroot/browserconfig.xmlへのリクエストに追跡して、ユーザーが認証されないようにしました。 Windowsが既存のCookieを送信していなかったため、サーバーは新しいセッションCookieを送信しました。その後のリクエストでは、新しいセッションCookie値が送信されました。サーバーを変更して、このリクエストを検索し、レスポンスCookieを設定しないようにしました。

2
James

これは解決策ではありませんが、

代わりにミドルクリックを試してください。それが100%あなたのために働くなら(それは私のためにやった)

js: links with target='_blank' on ie remove defaultBehaviour and trigger middle click.

問題が解決しました。

0
T04435