2009-04-02 4 views
1

リフレッシュヘッダー(またはページのメタリフレッシュタグ)を使用して非表示のIFRAMEを使用してキープアライブを実装するASP.NETアプリケーションがあります。IE7 - HTTPS IFRAME内のメタリフレッシュにより混在コンテンツの警告が発生する

IE7とIE8ベータ版でこれまでに再生されていたInternet Explorerのインスタンスは数多くありますが、全員ではありませんが、このキープアライブIFRAMEを含む2つのセキュアページ間を移動すると、

 
0s: load page1.html - includes keepalive.html, schedules a refresh at 15s 
5s: click the page2 link 
    load page2.html - includes keepalive.html, schedules a refresh at 20s 
15s: refresh of frame on page1 happens; mixed content error box displayed 

この時点で、「このページにはセキュリティで保護されたコンテンツと非セキュアなコンテンツの両方が含まれています」というエラーがブラウザに表示されます。

page1.html:

<html><head><title>Page 1</title></head><body> 
<h1>This is Page 1</h1> 
<p><a href="page2.html">Go to Page 2</a></p> 
<iframe src="keepalive.html" width="500" height="200" /> 
</body></html> 

2ページではなく、同じですが、2ページと言い、そして1ページへのリンク。

keepalive.html:私は私でこれをテストしているすべてのブラウザでは

<html><head> 
<meta http-equiv="refresh" content="15" /> 
</head><body> 
<h2>This is the keep alive</h2> 
</body></html> 

は、インターネットゾーンはメタリフレッシュを行う権限を持っており、混合コンテンツを表示する際に要求するように設定されていることを確実にしています。私はあなたのIFRAMEまたはIEでsrc = ""タグを持つ必要があることを示唆しているすべてのページを読んだことがあります。IEはそれを安全でないとみなすでしょう - 設計上、キープアライブページのsrcタグがなければなりません。

Page 1永遠に座っていると、IFRAMEが正常に更新されます。このエラーは、ページ2に変更した後に初めて表示されます。

これを最小限の変更で修正する方法を探しています。キープアライブのより良い方法は、control & automatically-refreshing imagesを使用することです将来のバージョンのために。考えられる回避策は、メタリフレッシュの代わりに、IFRAMEの内容をサーバーの通常のXMLHttpRequestにすることです。より簡単なバグ修正がさらに優れています。


更新:それは実際の問題に私を導くので、私は正しいようグラントワグナーの答えをマークした:レノボPassword Managerがアドオン、CpwmIEBrowserHelperは、このエラーが発生します。これは、私が尋ねた人々のほとんどがThinkPadを持っているという理由で、なぜこの問題を見る人がいるのか、ほかの人々は見ないのかをきれいに説明します。拡張機能を無効にすると、リフレッシュの問題はなくなります。我々はこの問題を解決するために、アプリケーションを使用する場合があります誰もが発生しないように

、我々はこのように見えるようにkeepalive.htmlページを更新し、JavaScriptのタイマーで行くつもりやウィンドウの位置を更新している:

<html><head> 
<meta http-equiv="pragma" content="no-cache"> 
</head><body> 
<h2>This is the keep alive</h2> 
<script type="text/javascript"> 

    setTimeout ('ReloadPage()', 15000); 

    function ReloadPage() { 
    window.location = window.location; 
    } 

</script> 
</body></html> 

答えて

1

IE6,7,8(テストリリース)でテストページを試しましたが、問題を再現できませんでした。

チェックするためにいくつかの点:

  • Fiddlerをダウンロードして、META REFRESHによって要求されたURLを確認してください。実際にはhttpsであることを確認してください。また、1と2ページのクエリ文字列をkeepalive.htmlに一意にすると、どの要求によってメッセージボックスが表示されているかを確認できます。
  • 影響を受けるすべてのブラウザで同じセキュリティゾーンにサイトが表示されていることを確認します(下部のステータスバーを確認し、IEのインスタンスがすべて「インターネット」または「ローカルイントラネット」であることを確認してください)。あるゾーンのブラウザーが動作していて、別のゾーンのブラウザーがそうでない場合は、同じゾーン内のブラウザーをすべて試すことができます。
  • アドオンなしで(スタート>すべてのプログラム>アクセサリ>システムツール> Internet Explorer(アドオンなし))または(スタート>実行> iexplore -extoff)Internet Explorerを起動します。苦しんでいるシステムでも同じことが起こりますか?この話はあなたの特定の問題とは無関係ですが、数年前にセッション(セッションCookieによって管理されていた)がセカンダリウィンドウで存続していないユーザーが1人いました。彼女がダウンロードしてインストールした人気のあるカーソルアドオンが、2つの異なるIEウィンドウ間のクッキーの共有を妨げていることが判明しました。物語の要点は、IEのアドオンが、アドオンと関連づけられない奇妙な動作を引き起こすことがあるということです。アドオンなしモードで試してみることをお勧めします。
  • 率直に言って、私は、問題の性質が心配ですすべてのマシンは、Internet Explorerの同じビルドで実行されていることを確認し(Internet Explorerの概要ヘルプ>またはhttp://update.microsoft.com/に行く)

。ページ1を訪問すると、iframeをリフレッシュするタイマーが設定され、その後、そのページから離れて移動され、指定された時刻にリフレッシュされます。メタリフレッシュ。 1ページ目から移動すると、最初のiframeの更新時にタイマーが停止するはずです。そのため、Fiddler(およびユニークなkeepalive.htmlクエリ文字列)を使用して、問題を引き起こしているiframeからのリクエストであることを確認する必要があります。

+0

私はフィドラーと何度も問題を抱えていました。いずれかのページを読み込もうとしたときにエラーが発生しない場合は、リダイレクトの15秒後にエラーが発生します。 (ページXのクエリ文字列を追加するヒントをお寄せいただきありがとうございます。一般的には良いアイデアです。) - アドオンのヒントは私を答えに導きます! – crb

+0

アドオンのヒントがあなたの答えにつながる理由を詳しく説明できますか?私は興味がある。 –

+0

アドオンなしでIEを起動しましたが、この問題は発生しませんでした。問題の原因となったものが見つかるまで、私は残りの半分を無効にし、バイナリ・チョップしました。 – crb

0

iframeをhttpsで始まる完全なURLで設定してみてください。過去にこれを実行しましたが、これが解決策だと思います。

+0

これをテストしました。サーバー上で変更が加えられました。違いはありません。 – crb

関連する問題