js实现跨域访问的三种方法

 更新时间:2015年12月09日 09:53:20   作者:lwaif  
这篇文章主要介绍了js实现跨域访问的三种方法,包括基于iframe实现跨域、基于script标签实现跨域以及后台代理方式 ,感兴趣的小伙伴们可以参考一下

javascript跨域访问是web开发者经常遇到的问题,什么是跨域,一个域上加载的脚本获取或操作另一个域上的文档属性,下面将列出三种实现javascript跨域方法:
1.基于iframe实现跨域
基于iframe实现的跨域要求两个域具有aa.xx.com,bb.xx.com这种特点,也就是两个页面必须属于一个基础域(例如都是xxx.com,或是xxx.com.cn),使用同一协议(例如都是 http)和同一端口(例如都是80),这样在两个页面中同时添加document.domain,就可以实现父页面调用子页面的函数,代码如下:
页面一: 

<html> 
<head> 
 <script> 
  document.domain = "xx.com"; 
  function aa(){ 
   alert("p"); 
  } 
 </script> 
</head> 
<body> 
  <iframe src="http://localhost:8080/CmsUI/2.html" id="i"> 
   
  </iframe> 
  <script> 
 document.getElementById('i').onload = function(){ 
   var d = document.getElementById('i').contentWindow; 
   d.a(); 
    
 }; 
  </script> 
 </body> 
</html> 

页面二: 

<html> 
 <head> 
 <script> 
  document.domain = "xx.com"; 
  function a(){ 
  alert("c"); 
   } 
 </script> 
 </head> 
 <body> 
 </body> 
</html> 

这时候父页面就可以调用子页面的a函数,实现js跨域访问
2.基于script标签实现跨域
script标签本身就可以访问其它域的资源,不受浏览器同源策略的限制,可以通过在页面动态创建script标签,代码如下:

var script = document.createElement('script'); 
script.src = "http://aa.xx.com/js/*.js"; 
document.body.appendChild(script); 

这样通过动态创建script标签就可以加载其它域的js文件,然后通过本页面就可以调用加载后js文件的函数,这样做的缺陷就是不能加载其它域的文档,只能是js文件,jsonp便是通过这种方式实现的,jsonp通过向其它域传入一个callback参数,通过其他域的后台将callback参数值和json串包装成javascript函数返回,因为是通过script标签发出的请求,浏览器会将返回来的字符串按照javascript进行解析执行,实现了域与域之间的数据传输。
jquery中对jsonp的支持也是基于此方案。
3.后台代理方式
这种方式可以解决所有跨域问题,也就是将后台作为代理,每次对其它域的请求转交给本域的后台,本域的后台通过模拟http请求去访问其它域,再将返回的结果返回给前台,这样做的好处是,无论访问的是文档,还是js文件都可以实现跨域。

以上js实现跨域访问的三种方法分先给大家,大家仔细研究学习,一定会有所收获

相关文章

  • js实现Form栏显示全格式时间时钟效果代码

    js实现Form栏显示全格式时间时钟效果代码

    这篇文章主要介绍了js实现Form栏显示全格式时间时钟效果代码,可读取当前的完整时间并实时显示,非常具有实用价值,需要的朋友可以参考下
    2015-08-08
  • 纯HTML5制作围住神经猫游戏-附源码下载

    纯HTML5制作围住神经猫游戏-附源码下载

    围住神经猫游戏是一款基于html5、jquery、typescript等技术开发的游戏,非常好玩,感兴趣的朋友快来围观吧,体验一把,下面给大家分享使用html5如何制作围住神经猫游戏-附源码下载,有需要的朋友可以参考下
    2015-08-08
  • JavaScript必看的10道面试题总结(推荐)

    JavaScript必看的10道面试题总结(推荐)

    JavaScript 已经成为全栈开发技能的基石,在全栈开发面试中都会不可避免地涉及到与 JavaScript 有关的问题。这篇文章主要给大家介绍了关于JavaScript必看的10道面试题,需要的朋友可以参考下
    2021-05-05
  • 一篇文章教你JS函数继承

    一篇文章教你JS函数继承

    这篇文章主要介绍了js继承方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-09-09
  • JS代码简洁方式之函数方法详解

    JS代码简洁方式之函数方法详解

    这篇文章主要介绍了JS代码简洁方式之函数方法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • Web Components入门教程示例详解

    Web Components入门教程示例详解

    这篇文章主要为大家介绍了Web Components入门教程示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • jQuery实现页面顶部下拉广告

    jQuery实现页面顶部下拉广告

    本文主要分享了jQuery实现页面顶部下拉广告的具体代码。具有一定的参考价值,下面跟着小编一起来看下吧
    2016-12-12
  • JavaScript插件化开发教程(五)

    JavaScript插件化开发教程(五)

    这篇文章是JavaScript插件化开发系列教程的第五篇,还是着重于实战,通过具体的实例来学习jQuery的方式如何开发插件,有相同需求的小伙伴来参考下吧。
    2015-02-02
  • js学习总结之DOM2兼容处理this问题的解决方法

    js学习总结之DOM2兼容处理this问题的解决方法

    这篇文章主要为大家详细介绍了js学习总结之DOM2兼容处理this问题的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • D3.js入门之D3 DataJoin的使用

    D3.js入门之D3 DataJoin的使用

    DataJoin(数据连接)是D3中很重要的一个概念。D3是基于数据操作DOM的js库,DataJoin使我们能够根据现有 HTML 文档中的数据集注入、修改和删除元素。本文主要和大家详细聊聊DataJoin的使用,感兴趣的可以学习一下
    2022-11-11

最新评论