Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法使用jquery从其他域获取iframe的值?_Php_Jquery_Jsonp - Fatal编程技术网

Php 无法使用jquery从其他域获取iframe的值?

Php 无法使用jquery从其他域获取iframe的值?,php,jquery,jsonp,Php,Jquery,Jsonp,我举一个例子: 在域1中:www.domain1.com/demo.php <div id="result">Hello</div> jQuery(document).ready(function($) { $('.click').click(function(){ var value = $("a").attr("href"); var dataString = 'var='+value; var url = 'http:/

我举一个例子:

在域1中:
www.domain1.com/demo.php

<div id="result">Hello</div>
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
is result not show

原因是出于安全原因,浏览器将阻止请求。这可能允许一个站点使用当前登录在后台加载另一个站点,然后窃取私人信息

例如,我登录我的银行帐户并查看我的信用卡,然后我访问另一个选项卡中的“imavirus.com”,它会将一个隐藏的iframe加载到我的银行。当我登录到银行网站时,它将加载登录,并显示我的信用卡信息。(这可能是一个坏例子,因为银行通常有更好的安全性,但你明白了)


在Chrome中尝试一下,你会在“Inspect Element”窗口中看到一个红色的小错误弹出。(其他浏览器可能也有类似的功能)

这是您面临的跨域问题。为什么不花一点时间看看呢


此外,如果你继续搜索,也会有参考资料

如果您可以从iFrame访问域上的代码,您可以尝试添加以下标题:

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

这将允许您的AJAX请求返回结果。

出于安全原因,您不能直接访问跨域iframe

但有一些解决办法

看看这个很好的例子: 在本帖中: