2

ドメインにページがあります:

http://main.mydomain.com/frame.cfmは、iframeを保持し、ドメインをロードしますhttp://www.anotherdomain.com

このページhttp://www.anotherdomain.comには、 http ://sub.mydomain.com/somescript.jsへのスクリプト参照があります。

このsomescriptは、www.anotherdomain.comの各リクエストで読み込まれるgoogleAnalyticsのような追跡スクリプトです。

ある段階で、www.anotherdomain.comページのスクリプトhttp://sub.mydomain.com/somescript.jsが呼び出しを試みますwindow.top.aFunction(); or parent.aFunction();

親ウィンドウに何かをさせるため。

X-Frame-OptionsとAccess-Control-Allow-Originヘッダーについて知っていて、両方を試しましたが、それでもwww.anotherdomain.comでiframeを参照すると、Firebugで次のようなエラーメッセージが表示されます。

Error: Permission denied to access property 'relocate'window.top.aFunction();

main.domainサイトのweb.configには、次のルールがあります。

<httpProtocol>
     <customHeaders>
    <add name="Access-Control-Allow-Origin" value="http://sub.mydomain.com" />
        <add name="X-Frame-Options" value="ALLOW-FROM http://sub.mydomain.com" />
     </customHeaders>
</httpProtocol>

私の意見では、sub.mydomain.comにmain.mydomain.comのスクリプトへのアクセスを許可する必要があります。

私はこれを、www.anotherdomain.comを除くすべてのドメインで、ホスト参照を使用してPC上でローカルにテストしています。

私がここで何を見逃しているのか分かりますか?

4

1 に答える 1

3

クロスドメインiFrameを介して親ウィンドウ関数のメソッドにアクセスすることはできません。同一生成元ポリシーに違反します。httpヘッダー応答はX-Frame、iFrameでページをレンダリングすることが許可されているかどうかをブラウザーに通知し、状況を改善しません。

私がお勧めする解決策はwindow.postMessage()、2つのフレーム間の通信に使用することです。http://ejohn.org/blog/cross-window-messaging/を見てください

于 2012-11-09T17:43:24.000 に答える