2016-10-20 16 views
0

<iframe src="https://"></iframe>をページのHTMLに追加すると、の親のページがすぐにIE 11の「アドレスは無効です」というエラーページにリダイレクトされます。Chromeでは、期待どおりに空白のiframeがページに表示されます。これはなぜですか、どういうわけかそれを防ぐことができますか?ありがとう!<iframe src = "https://">​​IE 11でページをリダイレクトするのはなぜですか?

EDIT:

私はユーザーが設定可能なすべてがコンポーネントの様々なタイプの完全なダッシュボード画面を表示するWebアプリケーションをテストしてきました。ユーザーは、HTTPSで配信されている限り、任意の外部コンテンツを埋め込むことができます。私は、誰かが "https://"というURLを埋め込もうとすると、結果として得られるページのリダイレクトによりアプリケーションが望ましくない状態になることがわかりました。これを防ぐためにユーザーの入力に制限を加える予定ですが、この親レベルのリダイレクトの背後にある実際のメカニズムについては興味がありました。

+0

有効なアドレスを入力してください。 –

+0

'src'の値が有効になる前にiframeを追加しないでください。親ページがリロードされていることを意味しない限り、リダイレクトしない*読み込み*です。この場合、親ページが表示されていないページの一部に依存しています。 – LinuxDisciple

+0

@SamKuhmonen - 私はいくつかの背景を追加し、無効なURLが入力されないようにして防止することができたとしても、なぜこれが起こっているのが最も興味があると説明しました。 – ztforster

答えて

1

IE11が不正なURLを表示するよう指示された場合、IEに組み込まれているHTMLとJavaScriptで表示されるエラーメッセージが表示されます。それは "アドレスが有効ではない"と言うページです。

HTMLファイルはsyntax.htmlと呼ばれ、HttpErrorPagesScripts.jsとerrorpagestrings.jsという2つのJavaScriptファイルをロードします。

後者のファイルは(あなたの閲覧を快適に再フォーマット)、このコードが含まれています。

function clickRefresh() 
{ 
    var location = window.location.href; 
    var poundIndex = location.indexOf('#'); 
    if (poundIndex != -1 && poundIndex+1 < location.length && isExternalUrlSafeForNavigation(location.substring(poundIndex+1))) 
    { 
     window.location.replace(location.substring(poundIndex+1)); 
    } 
} 

上記のJavaScriptの最後の行は、iframe内に囲まれたウェブサイトは、独自の挿入場所である「つぶしフレーム」を、(実行または他の)URLをアドレスバーに入力します。 IE固有の理由で、元のURLで、IE(実際のブラウザ)以外のブラウザで

をsyntax.htmlない、あなたがこのフレーム - を防ぐことができます。この場合、iframeをページは、独自のURLを挿入し

( ​​オプションを値なしで追加すると、JavaScriptの実行、リダイレクト、フォームの有効化(UIの修正に使用)、フレーム破損などに対してすべてのサンドボックス保護が有効になります。 完全なリストについてはhttps://developer.mozilla.org/en-US/docs/Web/HTML/Element/iframe

で、「サンドボックス」を探してください。良いブラウザではこれはork fine:

<iframe src="https://" sandbox ></iframe> 

(しかし、あなたはまだIEに夢中です) Mozillaのページには、IE10からIEによって開始される​​属性がIEでサポートされていると書かれていますが、上記の手法(​​を追加)はChromeでうまく動作しますがIE11では効果がないことがわかりました。私は確かにこれにIE固有のソリューションのためにインターネットを精査していないので、間違いなく周りを見ています。

関連する問題