2017-02-15 23 views
0

ドメインbanana.example.comから配信されたページを作成しました。私はそのドメインを所有しています。このページの目的は、私が所有していないmango.example.comのページに埋め込むことです。 (同じ "大きなドメイン"がと同じドメイン)これはうまくいきます。私はマンゴーの人々にURLを与え、自分のサイトのiframeにバナナのページを埋め込むことができます。埋め込みiframe内の外部ページから情報にアクセス

mango.example.comのどのページが埋め込まれているかによって、ページに表示される内容が少し異なります。

私が書く場合:

console.log(window.parent.window.location); 

私は場所オブジェクトとしてコンソールに印刷された完全なURLを取得しますが、私はどちらか、そのオブジェクトのプロパティ(例えば、HREF、パス名)のいずれかにアクセスしたり使用することはできません暗黙または明示的なメソッドを使用して場所オブジェクトを文字列化します。

私のページが埋め込まれているページに関する情報を得る方法はありますか? URL、タイトル、何ですか? (この質問の目的のために、私はbanana.example.com以上の権限しか持たず、mango.example.comの人々に何かを頼むことはできないと仮定してください)

+0

埋め込みページスクリプトにアクセスできますか、または追加の設定がありますか?クエスチョンパラメタやPOSTデータを使って現在のURLを渡すことができます。 – Hydro

+0

「バナナ」側にJavaScript(またはそれが役立つ場合はPHP)を書くことができます。クエリのパラメータやPOSTデータがどのようにこれに反映されるかは明確ではありません。あなたは精緻化できますか? – anaximander

+0

忘れて、あなたは何もすることができません。私がPOSTデータを参照したとき、フラグメント番号の前に、POST要求本体またはURLクエリパラメータを意味しました。つまり、http:blah.com?p1&p2 = blah&url = encodedURL' – Hydro

答えて

0

これはブラウザのためですCORS (クロスオリジンリソース共有)。この問題の解決策は、情報を要求している外部ページにメッセージを投稿することであり、それはあなたのiframeへの応答を送信し、そのためのハンドラを持ちます。 postMessagehereについて読む外側のページを制御していない場合、このような問題を解決することはできません。 iframeが情報を要求している場合にメッセージを受け取り、postMessageを使用して返信するようマンゴのオーナーに納得させる必要があります。

+0

それは私が恐れていたものです。ご確認、ありがとうございます。 – anaximander

+0

これはコメントです – Hydro

+0

@handoncloudあなたのコメントは答えの長さを指していると思います。答えは完全に質問に答えました。このような状況では、長さを増やすと「より良い」回答が得られると私は非常に驚くでしょう。あなたが私に尋ねると、短い完全な答えが長い完全な答えよりも優れています。 –

関連する問題