ajax跨域的三种方法
北京pk10冠军技 发布时间:08-29 来源:鹏鹏编程网 浏览:55次
  由于安全方面的原因,客户端js使用xmlhttprequest只能用来向来源网站发送请求,比如在www.zzsky.cn下去请求test.zzsky.cn的数据,都是不行的。不过,解决方法倒是不少,这里整理一下。

  1、使用script标签。script调用没有域的限制,比如我在www.zzsky.cn下的页面需要请求test.zzsky.cn的数据,那就可以这样做:

  http://www.zzsky_cn.juliaka.com/demo/ajax-cross-domain/test1.htm代码如下:
<html>   
<body>   
<script id="test"></script>   
<input type="button" id="button" value="获取" onclick="get('http://test.zzsky_cn.kaijutan.com/demo/test.asp');">   
<script type="text/javascript">   
function get(url)    
{    
    document.getElementById("test").src=url;    
    alert(data);    
}    
</script>   
</body>   
</html>
   

  http://test.zzsky_cn.cktpr.cn/demo/test.asp代码如下:
var data=123;
   

  那么,我在www.zzsky.cn下的test1.htm就可以操作js变量data了。上面只是简单地说明问题,实际应用的时候,可以用json等返回数据,script也可以动态创建等等。

  2、用同一个域下的服务端脚本中转。服务端脚本使用xmlhttp没有域的限制,这也算是一种方法吧,不过比较耗费服务器资源。

  3、利用框架的办法。在同一个域下的各个子域之间(非完全跨域),如果设置了document.domain,那么是可以相互之间调用js的。利用这一点,可以在test.zzsky.cn下面放上一个页面,这个页面可以完成用ajax获取同一个子域test.zzsky.cn的数据,而在www.zzsky.cn下框架这个页,这样,我们就可以操纵被框架页来获取数据了。具体代码如下:

    http://zzsky_cn.aoaoaoa.com/demo/ajax-cross-domain/test2.htm代码如下:
<html>   
<head>   
<script type="text/javascript">   
    document.domain="zzsky.cn";    
</script>   
<body>   
<iframe src="http://test.zzsky_cn.logozzz.com/demo/iframe.htm" id="proxy"></iframe>   
<script type="text/javascript" src="http://www.zzsky_cn.dutushi.com/demo/ajax-cross-domain/Ajax.js"></script>   
<input type="button" id="button" value="获取" onclick="get('http://test.zzsky_cn.keenflon.com/demo/test.asp');">   
<script type="text/javascript">   
function get(url)    
{    
      var proxy=document.getElementById("proxy").contentWindow;    
      proxy.createRequestObject(url,out)    
}    
   
function out(str)    
{    
    alert(str);    
}    
</script>   
</body>   
</html>
   

  被框架页http://test.zzsky_cn.nsgvm.cn/demo/iframe.htm代码如下:
[/code]<html>   
<head>   
<script type="text/javascript" src="http://www.zzsky_cn.guoxiyu.com/demo/ajax-cross-domain/Ajax.js"></script>   
<script type="text/javascript">   
document.domain="zzsky.cn";    
</script>   
</head>   
<body>   
</body>   
</html>[/code]

  这种方法比较好的就是,还是在用xmlhttp来请求,但只要在被请求的域下面放一个iframe.htm就可以了。

  附:跨子域设置的规则:当两个二级域名、URL协议、端口都相同的网页,自身都通过JavaScript设置了相同的document.domain值,并且此值至少等于自身的二级域名,它们之间才可以相互作用。
如果你有好的win10资讯或者win10教程,以及win10相关的问题想要获得win10系统下载的关注与报道。
欢迎加入发送邮件到657025171#qq.com(#替换为@)。期待你的好消息!
上海时时乐开奖走势图连线 北京pk10多久开一期 北京pk10挂机方案 北京快乐8选号技巧 北京快乐8赢遍天下 河南快赢481现场视频
北京pk10冠亚军技巧 北京赛车pk10冠军公式 时时乐开奖号码 北京pk10彩票 快乐彩开奖
北京pk10冠亚军技巧 北京pk10冠军走势图 北京pk10冠军技巧 pk10冠军技巧5码公式 北京pk10冠军技巧 北京pk10猜冠军技巧
朝鲜在华特工北京追杀 性娱乐网站 快乐十分为什么老输钱 北京赛车pk10定位技巧 北京pk10预测冠军定码
早点连锁加盟 早餐 早点加盟连锁店 娘家早点车怎么加盟 早点豆浆加盟
早餐类加盟 陕西早点加盟 早点快餐加盟 早点小吃加盟连锁 山东早餐加盟
中式早点加盟 品牌早餐店加盟 山东早点加盟 早点小吃加盟网 湖北早餐加盟
四川特色早点加盟 杨国福麻辣烫加盟 早点加盟连锁 首钢早餐加盟 书店加盟
新疆时时彩开奖号结果 ‖11选五浙江开奖结果 内蒙古11选5app下载 快3分析软件 乐透啦
湖北快三技巧 山东11选5平台 上海快三走势图 湖北体彩十一选五 快乐10分钟技巧
www56994com香港赛马会欢迎光临 11选5稳杀两码公式 吉林十一选五走势图表 腾讯分分彩在哪看开奖 香港挂牌心水论坛
广西快3开奖结果 jk139本港现场报码 天津十一选五官网 彩票软件哪个好 北京pk10预测在线