返回首页


我有一个项目,我需要交换两域的数据,使用AJAX。出于安全原因,所有主要的浏览器不允许跨域请求。如果你控制两个域,您可以使用HTTP头。我试了一下,发现并不是所有的浏览器支持该标准。是好事,你仍然可以做itnbsp按照这个简单的想法。
考虑两个域consumer.com和producer.com的。显然,consumer.com需要从producer.com得到一些数据。
首先,我们调用一个隐藏的iframe producer.com:

<iframe src="http://producer.com/request.html?request_params=data", 

style="width:0;height:0;border:0px solid #fff;">

</iframe>



<script>

function proxy_done(reply)

{

alert(reply);

... process reply from producer.com

}

</script>

'风格'属性隐藏的iframe。 ?代码> proxy_done??函数被调用时的答复是准备。 IFRAME元素与producer.com是不允许的沟通与父页面(consumer.com)。我们只需要重定向回consumer.com。
简单...
在producer.com中,像下面这样创建request.html。{C}
脚本重定向的答复数据的iframe代理页面(见下文)驻留在consumer.com。
此时,原来的IFRAME元素consumer.com包含从producer.com答复的proxy_page.html。因为proxy_page.html是consumer.com它现在可以访问它的父页面。现在,我们可以称之为"proxy_done"功能,并通过它的答复。
<?php

echo '<script> var reply="'.$_GET['reply'].'"; </script>';

?>

<script>

window.top.window.proxy_done(reply);

</script>

就是这样。最有可能,你希望能够从您的JavaScript应用程序consumer.com producer.com动态调用。要做到这一点,只是动态创建iframe元素... document.createElement方法("iframequot ;) ...这个DOM的东西如下...

回答

评论会员: 时间:2