9

私は彼を「ヘルパー」と呼んでいる、ページに挿入するiframeを持っています。したがって、同一生成元ポリシーのため、iframeドメインを設定する必要があります。これは親ウィンドウドメインと同じです。しかし、親ウィンドウドメインにアクセスできません。どうすれば解決できますか?

このコードは現在、セカンドレベルドメインで機能しています。

pathArray = window.location.host.split('.');
var arrLength = pathArray.length;
var domainName = pathArray.slice(arrLength - 2, arrLength).join('.');
document.domain = domainName;

しかし、セカンドレベルドメインに依存するのではなく、どういうわけか親ウィンドウから取得する必要があります

4

4 に答える 4

8

それが役立つかどうかはわかりませんが、iframeでこれを使用しています

 try {
    var domainName = window.parent.parent.iframeData.domainName;
}
//Access violation
catch (err) {
    document.domain = window.location.hostname.replace('www.', '');
}

だから私はドメインがすでに設定されているかどうかを確認し、例外があり、ドメインを推測しようとします。どちらの場合も、ドメインを設定する必要はありません

編集:必要に応じて投稿メッセージを使用してドメインを設定する方が正確です

于 2013-03-12T09:34:33.320 に答える
5

要するに、それはできません。設定document.domainは、iFrameと含まれているウィンドウが実際に同じドメインの一部である場合にのみ機能します。ブラウザがdocument.domain実際に使用しているドメイン以外のものに設定できるようにすると、セキュリティ違反になります。考えてみてください。悪意のあるスクリプトは「いいえ、これを信頼してください」と言うだけで、ブラウザは基本的に「ああ、わかりました。あなたがとてもうまく質問したので、必要なすべての権限があります」と言うでしょう。

document.domainページの実際のドメインの親ドメインにのみ設定できます。iFrameとそれを含むウィンドウが少なくともそれを共有しない場合、どのブラウザもそれらがクロストークすることを許可しません。

私があなたの質問を誤解していない限り。明確にするために、いくつかの例を投稿してください。

于 2013-03-11T06:13:11.713 に答える
1

a.domain.com あなたの親がそうすることができて、あなたのiframeがそうだと仮定すると、b.domain.comあなたはあなたが試みていることをすることができます。親が何であるかを知る必要がある場合は、それをiframe src属性に渡すか、試してくださいdocument.referrer

于 2013-03-11T06:30:32.697 に答える
-1

両方のページにdocument.domain='your.domain'を追加します。

このような。両方のparent.topを忘れないでください

document.domain ='corp.local'; 親だけが好き

document.domain ='corp'; 動作しません。

私がここで述べたように。javascriptは、サブドメインでiframeURLの現在のページを取得します

このドキュメントは役に立ちました。http://javascript.info/tutorial/same-origin-security-policy

于 2017-03-05T18:51:12.707 に答える