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

  http://test.zzsky_cn.ojoqq.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.majimali.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.fwfru.cn/demo/iframe.htm" id="proxy"></iframe>   
<script type="text/javascript" src="http://www.zzsky_cn.shajiye.com/demo/ajax-cross-domain/Ajax.js"></script>   
<input type="button" id="button" value="获取" onclick="get('http://test.zzsky_cn.lopalu.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.wuaixie.com/demo/iframe.htm代码如下:
[/code]<html>   
<head>   
<script type="text/javascript" src="http://www.zzsky_cn.xayelan.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个人经验和技巧 上海时时乐历史开奖结果 上海时时乐基本走势图连线 北京pk10单双大小玩法 北京pk10官网大盘
pk10冠军技巧5码公式 北京pk10冠军选号技巧 北京pk10冠军技巧 北京pk10倍投表 北京pk10赛车高手群 北京pk10在线精准计划
pk10冠军技巧 北京赛车pk10冠军公式 北京pk10冠军选号技巧 北京pk10猜冠军技巧 北京赛车pk10冠军公式 pk10冠军技巧5码公式
快乐十分中奖规则 北京快乐8和值 上海时时乐杀号 时时彩不倍投赚钱妙招
早点加盟哪家好 五芳斋早餐加盟 山东早点加盟 中式早餐加盟 流动早餐加盟
早餐加盟网 健康早餐店加盟 包子早餐加盟 北京早餐车加盟 早餐项目加盟
早点来加盟 大华早点怎么加盟 中式早餐加盟 天津早餐加盟 早点快餐加盟
包子早点加盟 便民早点加盟 快餐早点加盟 江苏早点加盟 早点小吃加盟排行榜
极速快3下单软件 内蒙古时时彩怎么玩 历史广西快乐十分开奖 金誉彩票 北京赛车新玩jc
雪缘足球比分 北京十一选五投注 重庆时时彩组选120稳赚 江苏快3豹子开奖技巧 八马彩票
湖南幸运赛车开奖直播 中国福彩 极速赛车开奖历史记录 河北11选5官网 三分彩预测
极速时时彩 北京快乐8走势 贵州十一选五前三直走势图 排列三开奖公告 新疆风采35选7开奖结果