3

test.htmlコンピューター (localhost) にhtml ページ ( ) があります。そのページのiframeにabc.example.comロードしました。

abc.example.com別のドメインからiframe のコンテンツにアクセスしたいxyz.example.com。これが私がこれまでに試したことです:

//test.html in abc.example.com
<input type="textbox" />
<input type="submit" value="click_me" />

//Start.html in xyz.example.com

<script type="text/javascript">
  $(document).ready(function() {

    $("#ok").click(function() {
      //using javascript
      var oo = document.getElementById("myFrame");

      document.getElementById("divFrame").innerHTML = 
        oo.contentWindow.document.body.innerHTML;   
    });

  });
</script>

<iframe id="myFrame" src="http://localhost/exam/test.html"></iframe>
<div id="divFrame"></div>
<input type="submit" id="ok" />

しかし、「OK」ボタンを押すと、"Access is Denied"エラーがスローされます。iframe でのクリックをシミュレートするために jQuery を使用すると、同じエラーが発生します。

var btn = window.frames[0].document.getElementsByName('click_me');
btn[0].click();
4

1 に答える 1

4

JavaScriptでは、別のドメインのフレームにアクセスすることはできません。これは同一生成元ポリシーと呼ばれます。これが許可された場合、たとえば、非表示のフレームを開いてFacebookとGoogle+をロードし、全員の情報を盗むことができます。

場合によっては、同一生成元ポリシーを回避する方法がありますが、ドメインを明示的にホワイトリストに登録する必要があります。クロスオリジンリソースシェアリングを使用する場合と同様です。したがって、別のドメインから動的に(AJAX / XMLHTTPRequest)データをフェッチすることは可能ですが、他のドメインも制御する必要があります。

于 2012-08-20T18:14:56.293 に答える