Php 无法使用jquery从其他域获取iframe的值?
我举一个例子: 在域1中: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:/
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 但有一些解决办法 看看这个很好的例子: 在本帖中: