博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ajax跨域的三种方法
阅读量:4580 次
发布时间:2019-06-09

本文共 1511 字,大约阅读时间需要 5 分钟。

由于安全方面的原因,客户端js使用xmlhttprequest只能用来向来源网站发送请求,比如在www.zzsky.cn下去请求test.zzsky.cn的数据,都是不行的。不过,解决方法倒是不少,这里整理一下。

  1、使用script标签。script调用没有域的限制,比如我在www.zzsky.cn下的页面需要请求test.zzsky.cn的数据,那就可以这样做:
  http://www.zzsky.cn/demo/ajax-cross-domain/test1.htm代码如下:

<html>   
<body>   
<script id="test"></script>   
<input type="button" id="button" value="获取" οnclick="get('http://test.zzsky.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/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/demo/ajax-cross-domain/test2.htm代码如下:

                           

  

   

  被框架页http://test.zzsky.cn/demo/iframe.htm代码如下:
[/code]<html>   
<head>   
<script type="text/javascript" src="http://www.zzsky.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值,并且此值至少等于自身的二级域名,它们之间才可以相互作用。

转载于:https://www.cnblogs.com/biGpython/archive/2011/08/12/2135618.html

你可能感兴趣的文章
为什么要去创业?
查看>>
JBoss 系列十七:使用JGroups构建块MessageDispatcher 构建群组通信应用
查看>>
ajax交互Struts2的action(1)
查看>>
数据结构与算法 多种排序算法
查看>>
Vijos P1794 文化之旅
查看>>
Coding源码学习第四部分(Masonry介绍与使用(一))
查看>>
Bug 汇总
查看>>
Windows Desktop Optimization.bat
查看>>
操作数据库,增删改查
查看>>
[jAudio] JAVA上经典特征提取工具
查看>>
TestLead的总结
查看>>
git版本分支和分支、分支和主分支切换
查看>>
C++学习之模板(一) ----函数模板
查看>>
清除浮动的方式
查看>>
appium+python环境搭建
查看>>
MySQL
查看>>
关于数据库外连接和内连接和交叉连接
查看>>
git基本使用
查看>>
Leetcode 109 Convert Sorted List to Binary Search Tree
查看>>
1. 决策树(Decision Tree)-决策树原理
查看>>