-1

私は例を持っています:

ドメイン 1:www.domain1.com/demo.php

<div id="result">Hello</div>

ドメイン 2:www.domain2.com/demo.php

jQuery(document).ready(function($) { 
   $('.click').click(function(){
      var value = $("a").attr("href");
      var dataString = 'var='+value;
      var url = 'http://www.domain1.com/test.php?'+dataString;
      $.getJSON(url + "&jsoncallback=?", function(data){
         $("#result").html(data);
      })
      return false;
   });  
});

<iframe src="http://www.domain1.com/demo.php" frameborder="0" border="0" scrolling="no"></iframe>
<a href="play" class="click">Click on this</a>

最後www.domain1.com/test.phpに、json コールバックを呼び出します。

<?php
if($_GET['var']) {
    $value = $_GET['var'];
    echo $_GET["jsoncallback"] . '(' . json_encode($value) . ');';
}
?>

=> ドメイン 1 からドメイン 2 に値を取得できませんか?

テスト後、実行するwww.domain2.com/demo.phpと結果が表示されません

4

4 に答える 4

3

これは、ブラウザがセキュリティ上の理由からリクエストをブロックするためです。これにより、サイトが現在のログインを使用してバックグラウンドで別のサイトをロードし、個人情報を盗む可能性があります。

たとえば、銀行口座にログインしてクレジット カードを表示し、別のタブで「imavirus.com」にアクセスすると、非表示の iframe が銀行に読み込まれます。銀行のサイトにログインすると、ログインが読み込まれ、クレジット カード情報が表示されます。(通常、銀行はより優れたセキュリティを備えているため、これは悪い例かもしれませんが、お分かりいただけると思います)

Chrome で試してみると、[Inspect Element] ウィンドウに小さな赤いエラーが表示されます。(他のブラウザも似たようなものでしょう)

于 2012-11-01T01:47:59.257 に答える
0

iFrameからアクセスしているドメインのコードにアクセスできる場合は、次のヘッダーを追加してみてください。

// In PHP, before any output is sent...
header( "Access-Control-Allow-Origin: http://www.domain2.com" );

これにより、AJAXリクエストが結果を返すことができます。

于 2012-11-01T02:11:30.290 に答える
0

それはあなたが直面しているクロスドメインの問題です。このチュートリアルを見て時間を割いてみてはいかがでしょうか?

また、SOで検索すると、参考になる良い投稿もあります。

于 2012-11-01T01:49:45.287 に答える
0

セキュリティ上の理由から、クロスドメイン iframe に直接アクセスすることはできません。

しかし、いくつかの解決策があります。

この素晴らしい例を見てください: http://onlineaspect.com/uploads/postmessage/parent.html この投稿で: http://onlineaspect.com/2010/01/15/backwards-compatible-postmessage/

于 2012-11-01T05:09:22.783 に答える