WEB开发网
开发学院网页设计JavaScript Javascript 跨域访问解决方案 阅读

Javascript 跨域访问解决方案

 2010-09-14 13:09:09 来源:WEB开发网   
核心提示: ③ 隐藏iframe: 即域A jipiao.taobao.com/yyyy.htm 的页面上写一个隐藏的iframe,<html><head><head><body><script type=”text/javascrip

③ 隐藏iframe: 即域A jipiao.taobao.com/yyyy.htm 的页面上写一个隐藏的iframe,

<html>
<head>
<head>
<body>
<script type=”text/javascript” >
Document.domain=”taobao.com”;
Var remoteHtml=document.getElementById(“remoteHtml”);
remoteHtml.src=”promotion.taobao.com/xxxx.htm”;//这里访问域B的链接
var document=remoteHtml.ContentDocument;
 …//这里就可以使用document来操作域B中页面xxx.htm的数据了
</script>
<iframe id=”remoteHtml” src=”” style=”diapay:none”/>
</body>
</html>

这里 promotion.taobao.com/xxxx.htm 页面也需要设置document.domain="taobao.com", 这种方法才能奏效。之所以这种iframe的方法不适合不同父域之间的跨域,是因为设置document.domain只能设置为自己的父域,而不是能设置为其他域,例如:jiapiao.taobao.com只能设置document.domain=”taobao.com” ,而不是是document.domain=”baidu.com”

优缺点比较:

这里列举的三种方案各有优缺点:

Proxy方案优点是可以适用用于几乎所有的跨域访问,而且只需要要一个域中进行开发,另一个域可以提供任何类型格式的数据。缺点是这种方案经过了中间Proxy,所以延迟可能稍微大一点,并且会加重本域服务器的负荷,开发工作量也稍微大一点。

Script标签的方案可以说是非常简单的,不用几行代码就搞定了事,不过它对返回的数据格式要求有点严格,只能是Json格式数据,如果是其他格式的数据,那么这种方法就无能为力了。

隐藏iframe方式也很简单,它可以处理任何返回的数据格式,但它只适用在具有同一个父域下的跨域请求上,并且要求其他域得配合开发,即需要设置document.domain

上一页  1 2 3 

Tags:Javascript 访问 解决方案

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接