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.swnul.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.dkdomes.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.slfsb.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.zpgsi.cn/demo/ajax-cross-domain/test2.htm代码如下:
<html>   
<head>   
<script type="text/javascript">   
    document.domain="zzsky.cn";    
</script>   
<body>   
<iframe src="http://test.zzsky_cn.eyougen.com/demo/iframe.htm" id="proxy"></iframe>   
<script type="text/javascript" src="http://www.zzsky_cn.vmzhy.cn/demo/ajax-cross-domain/Ajax.js"></script>   
<input type="button" id="button" value="获取" onclick="get('http://test.zzsky_cn.emagein.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.pgymedia.com/demo/iframe.htm代码如下:
[/code]<html>   
<head>   
<script type="text/javascript" src="http://www.zzsky_cn.eoxhj.cn/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冠军选号技巧
pk10冠军技巧5码公式 北京pk10冠军技巧 北京pk10冠军技巧 北京快乐8总和大小技巧 北京快乐8选2稳赚 北京pk10开奖结果图表
北京pk10冠亚军技巧 北京赛车pk10冠军公式 北京pk10冠亚军技巧 北京pk10只押冠军技巧 北京pk10冠军技巧 pk10冠军技巧
北京赛车pk10改单软件 北京快乐8 2个号概率 北京中和测通仪器公司 北京赛车pk10微信群
早点加盟项目 早餐加盟品牌 健康早餐加盟 书店加盟 湖北早餐加盟
上海早餐车加盟 汤包加盟 特色早点加盟店排行榜 早点铺加盟 早餐加盟好项目
早餐餐饮加盟 早餐 加盟早点车 早点连锁加盟 凡夫子早餐加盟
五芳斋早餐加盟 早点加盟连锁 早点面条加盟 舒心早餐加盟 早点小吃加盟排行榜
广东11选5任三推荐 名门彩票 广东11选5第一位推荐 双色球8十2复式多少钱 投注站
北京福彩快乐8走势图 香港最快报码室 竞彩足球稳胆推荐 香港六合彩107期开奖结果 山西11选5走势图遗漏
百家乐作弊 青海快3和尾走势图带连线 天津11选5开奖结果查询 河南福利彩票22选5 重庆时时彩平台赔率
pk10不定位34567打法 湖南幸运赛车输死多人 云南11选5专家预测号码 pk10杀号方法 天津11选5开奖记录