JSONP,跨域

1.什么是同源策略

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

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

概念:只要协议、域名、端口有任何一个不同,都被当作是不同的域。

URL                      说明       是否允许通信
http://www.a.com/a.js
http://www.a.com/b.js     同一域名下   允许
-------------------------------
http://www.a.com/lab/a.js
http://www.a.com/script/b.js 同一域名下不同文件夹 允许
-------------------------------
http://www.a.com:8000/a.js
http://www.a.com/b.js     同一域名,不同端口  不允许
-------------------------------
http://www.a.com/a.js
https://www.a.com/b.js 同一域名,不同协议 不允许
-------------------------------
http://www.a.com/a.js
http://70.32.92.74/b.js 域名和域名对应ip 不允许
------------------------------
http://www.a.com/a.js
http://script.a.com/b.js 主域相同,子域不同 不允许
-------------------------------
http://www.a.com/a.js
http://a.com/b.js 同一域名,不同二级域名(同上) 不允许(cookie这种情况下也不允许访问)
-------------------------------
http://www.cnblogs.com/a.js
http://www.a.com/b.js 不同域名 不允许

跨域实现形式:

  • 通过jsonp跨域
  • 通过修改document.domain来跨子域
  • 使用window.name来进行跨域
  • 使用HTML5的window.postMessage方法跨域

3.JSONP 的原理是什么

XMLHttpRequest不能跨域,但是

js文件载入成功后会执行我们在url参数中指定的函数,并且会把我们需要的json数据作为参数传入。所以jsonp是需要服务器端的页面进行相应的配合的。

4. CORS是什么

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

你可能感兴趣的:(JSONP,跨域)