2017-12-18 12 views
0

ユーザーが自分のURLを入力してiframeでブラウズすることを許可します。 確認ボタンをクリックすると、iFrameからURLを取得します。GWT原点 "http:// localhost"のフレームがクロスオリジンフレームにアクセスしないようにブロックしました

IFrameElement frame = IFrameElement.as(DOM.createIFrame()); 
frame.setSrc("http://www.example.com"); //set the url of user enter 
VerticalPanel ver = new VerticalPanel(); 
ver.getElement().appendChild(frame); 

// After they click the confirm button, get the url from iframe 
Window.alert(frame.getContentDocument().getURL()); 

しかし、私は、iframeの

ExceptionからURLを取得した後、私はエラーを得た:com.google.gwt.event.shared.UmbrellaException:例外 がキャッチ:(例外SecurityError):フレームをブロックされました原点は "http://localhost"はクロスオリジンフレームにアクセスできません。

答えて

2

要するに、これを行うべきではありません。これを行うことはできません。


まず:

一部のページ作者は単に自分のページがフレーム内に表示されるようにする必要はありません。例えばFacebookのを試してみてください、あなたが得るだろう:それは否定 'に「X-フレーム・オプション」を設定しているため

は、フレーム内の「https://www.facebook.com/」を表示することを拒否しました。

1つはまた、ページがフレーム内にある場合(スクリプトで)確認し、「突破」とメインウィンドウを取り、http://www.interia.pl/は一例であることができます。

したがって、フレームに表示できないページがあります。


第二:

読むについてSame Origin Policy (SOP)

簡単に言えば

、SOPは、Webページ上で実行されているJavaScriptコードが同じから発信ない任意のリソースと対話しないかもしれないと述べていますウェブサイト。このセキュリティポリシーが存在する理由は、悪意のあるWebコーダーがWebユーザーの情報を盗んだり、プライバシーを侵害するページを作成しないようにするためです。非常に必要ですが、このポリシーにはWeb開発者の生活を困難にする副作用もあります。

関連する問題