1

HTTPサーバーを作成するNODE JSモジュールを使用しています。サーバーの応答は、Web ページを に埋め込む JavaScript を含むページです。応答コードは次のとおりです。

<html>
<head>
<script type='text/javascript'>
function test() {
document.body.innerHTML='<iframe id="ifool" src="URL" sandbox="allow-same-origin allow-forms allow-scripts"> </iframe>';
var c;                 
window.setInterval(function(){
c=document.getElementById("ifool").contentWindow.location.href; 
window.history.pushState(0,0,c);  
},100);
</script>
</head>
<body onload= "test()">
</body>
</html>

FF で Firebug を使用しています。次のエラーが表示されます。

 Error: Permission denied to access property 'href'
    c=document.getElementById("ifool").contentWindow.location.href;
4

1 に答える 1

3

iframe でアクセスしようとしている URL が現在のページ ドメインの外にある場合は、アクセスできません。最新のブラウザーは、クロス サイト スクリプティングの実行時に JavaScript のアクセス許可を決定する同一生成元ポリシーを実装しています。

親と子が同じドメインから来る場合、それらは相互にアクセスできます。子は親のプロパティとメソッドにアクセスして操作でき、その逆も可能です。ただし、そうでない場合、そのようなアクセスを試みると、許可が拒否されたことを示すスクリプト エラーがトリガーされます。

自分のページと iframe ソースがノード サーバーによってホストされているページを指している状態で同様のスクリプトを実行しようとしても、パーミッション エラーは発生しません。

ソース:

  1. http://www.esqsoft.com/javascript_examples/iframe_talks_to_parent/
  2. エラー: プロパティ 'ドキュメント' へのアクセスが拒否されました
  3. iframe から親 URL にアクセスする
  4. <iframe> javascriptはドメイン間で親DOMにアクセスしますか?
于 2013-03-29T17:28:42.750 に答える