JavaScript 跨域问题的几种解决方法
来源:互联网 发布:学java要看什么书 编辑:程序博客网 时间:2024/06/06 05:41
一、什么是跨域
相同域名、相同网络协议、相同端口,三者都满足就是同一个域,否则就是跨域。
二、为什么会产生跨域问题
JavaScript出于安全方面的考虑,是不允许跨域调用其他页面的对象的(同源策略 Same-Origin Policy)。当我们用浏览器中打开网页,执行一个脚本的时候会检查这个脚本属于哪个页面的,即检查是否同源,只有同源的脚本才会被执行,如果没有同源策略,那随便的注入一个js脚本,弹个恶意广告,通过js窃取信息,就很不安全了。
然而我们经常把网站的一些脚本、图片或其他资源放到静态服务器,页面可以更快的加载,而且减少了Web服务器的压力。或者系统间跨域接口,进行数据传递。这就产生了跨域问题。
三、如何解决跨域问题
1、跨域代理
一种简单的办法,就是把跨域的工作交给服务器,从后台获取其他站点的数据再返回给前台,也就是跨域代理(Cross Domain Proxy)。这种方法似乎蛮简单的,改动也不太大。不过就是http请求多了些,响应慢了些,服务器的负载重了些。
2、XHR2
HTML5中提供的XMLHTTPREQUEST Level2(及XHR2)已经实现了跨域访问。但IE10以下不支持,只需要在服务端填上响应头:
header("Access-Control-Allow-Origin:*"); /*星号表示所有的域都可以接受,*/header("Access-Control-Allow-Methods:GET,POST");
3、通过jsonp实现跨域
- 服务端:
$data = json_encode(array('msg'=>'msg....'));die( $_REQUEST['function_name_index'].'('.$data.')' );
- ajax请求:
<script> $.ajax({ url:'http://192.168.1.124/homekoo.com/zde/cors_1.php', dataType:'jsonp', jsonp:'function_name_index', jsonpCallback:'function_name', success:function(data){ alert(data.msg); } });</script>
JSONP的最基本的原理是:动态添加一个src标签,而script标签的src属性是没有跨域的限制的。这样说来,这种跨域方式其实与ajax XmlHttpRequest协议无关了。
4、 通过CORS实现跨域
四、后记
本文仅用于记录学习笔记。初始版本比较粗糙,后续会不断完善。
五、参考资料
- [x] 解决ajax跨域的方法原理详解_cnsd
- [x] Ajax跨域问题的两种解决方法 _博客园
阅读全文
0 0
- JavaScript 跨域问题的几种解决方法
- Javascript跨域请求的几种解决方法
- Javascript跨域请求的几种解决方法
- 跨域的几种解决方法
- 跨域的几种解决方法
- AJAX跨域的几种解决方法
- AJAX缓存问题产生的缘由以及几种解决方法
- 多重共线性问题的几种解决方法
- 多重共线性问题的几种解决方法
- 多重共线性问题的几种解决方法
- SilverLight跨域访问及其常用的几种解决方法
- SilverLight跨域访问及其常用的几种解决方法
- SilverLight跨域访问及其常用的几种解决方法
- SilverLight跨域访问及其常用的几种解决方法
- 几种outofmemory的解决方法
- JavaScript实现跨域的几种方法
- JavaScript解决跨域的几种方式
- 跨域问题的两种解决方法
- 1000的阶乘
- 梯度下降法
- java并发编程学习9--同步器--倒计时门栓
- The realization of a simple single linked list【1.6】
- 第四周项目一
- JavaScript 跨域问题的几种解决方法
- __str__运算符重构
- SGISTL源码探究-stl_algo.h中的排列算法
- CTF之加解密总结
- 归并排序
- 机器学习-Tensorflow_CNN_mnit
- Android回调机制学习
- Django 连接mysql Oracle数据库
- 写时拷贝