日夜谈——同源策略与跨域

1.什么是同源策略

同domain即域名(或ip),同端口,同协议视为同一个域,一个域内的脚本仅仅具有本域内的权限,可以理解为本域脚本只能读写本域内的资源,而无法访问其它域的资源。这种安全限制称为同源策略。

2. 什么是跨域?跨域有几种实现形式

跨域是指从一个域名的网页去请求另一个域名的资源。比如从http://www.baidu.com/ 页面去请求 http://www.google.com 的资源。跨域的严格一点的定义是:只要一个源向另一个 协议,域名,端口有任何一个的不同的源请求资源,就被当作是跨域。

跨域实现形式:

  1. JSONP
  2. CORS:跨域资源共享(Cross-Origin Resource Sharing)
  3. 降域
  4. postMessage()
3. JSONP 的原理是什么

JSONP基本思想是,网页通过添加一个<script>元素,向服务器请求JSON数据,这种做法不受同源政策限制;服务器收到请求后,将数据放在一个指定名字的回调函数里传回来,之后有例子。

4. CORS是什么

CORS的全称是Cross-Origin Resources Sharing,它允许浏览器向跨源服务器,发出请求,从而克服了AJAX只能同源使用的限制。
原理
<li>CORS需要浏览器和服务器同时支持。目前,所有浏览器都支持该功能,IE浏览器不能低于IE10;
<li>整个CORS通信过程,都是浏览器自动完成,不需要用户参与。对于开发者来说,CORS通信与同源的AJAX通信没有差别,代码完全一样。浏览器一旦发现AJAX请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求,但用户不会有感觉。
<li>实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。

5.实现跨域的一些方法
JSONP实现
jsonp.png

JSONP demo

CROS实现
CROS.png

代码

降域实现
降域.png

代码

postMessage实现

postMessage.png

代码

感谢瓜子观众:


版权归饥人谷peter和饥人谷所有,若有转载,请注明来源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容