ajax跨域和js跨域解决方案

<FONT face=""">ajax跨域和JS的跨域通信(Cross The Site)的几种解决方案

1.什么引起了ajax跨域不能的问题

ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,所以会警告。

2.有什么完美的解决方案么?

没有。解决方案有不少,但是只能是根据自己的实际情况来选择。

具体情况有:

一、本域和子域的相互访问: www.aa.com和book.aa.com

二、本域和其他域的相互访问: www.aa.comwww.bb.com 用 iframe

三、本域和其他域的相互访问: www.aa.comwww.bb.com 用 XMLHttpRequest访问代理

四、本域和其他域的相互访问: www.aa.comwww.bb.com 用 JS创建动态脚本

解决方法:

在同一域的服务器端建立一个代理,浏览器向该代理网址发送请求,然后该代理向其他域的网址发请求,在获取回复后,或作处理或按原样发回到浏览器

使用按需(On-Demand) Javascript 脚本。在页面内动态生成新的<script>,将其src属性指向别的网站的网址,这个网址返回的内容必须是合法的Javascript脚本,常用的是JSON消息。

使用IFRAME。在页面内嵌或动态生成指向别的网站的IFRAME,然后这2个网页间可以通过改变对方的anchor hash fragment来传输消息。改变一个网页的anchor hash fragment并不会使浏览器重新装载网页,所以一个网页的状态得以保持,而网页本身则可以通过一个计时器(timer)来察觉自己anchor hash的变化,从而相应改变自己的状态

示例:

<HTML>

<HEAD>

<script LANGUAGE="Javascript">

<!--

function get()

{

var obj = document.getElementById("get");

var s=document.createElement('SCRIPT');

s.id="get";

s.src='http://www.zzb.bupt.cn/test.html';

document.body.replaceChild(s,obj);

setTimeout('alert(result.name)',1000);

}

//-->

</script>

</HEAD>

<BODY>

<INPUT TYPE="button" value="CLICK ME" onclick="get()"/>

<script id="get">

</script>

</BODY>

</HTML>

http://www.zzb.bupt.cn/test.html的内容

var result={name:'yangyun',number:12};

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值