源
window.origin 或 location.orgin 可以得到当前源
源=协议+域名+端口号
如果两个 ur 的协议、域名、端口号完全一致,那么这两个 url 就是同源的
比如:https://baidu.com 和 https://www.baidu.com 不同源。
完全一致才算同源
同源策略
浏览器规定,如果 JS 运行在源 A 里,那么就只能获取源 A 的数据不能获取源 B 的数据,即不允许跨域
为了保护隐私,**不同源的页面之间,不准互相访问数据
CORS
JSONP
我们在跨域的时候,由于当前浏览器或者某些条件不支持CORS,我们必须使用例外一种方式跨域
于是我们请求一个js文件,这个js文件会执行一个回调,回调里面就有我们的数据。
回调的名字可以是一个随机生成的随机数,以callback的参数传给后台,后台把这个参数返回给我们并执行
优点:
- 兼容IE
- 可以跨域,即使请求的JSONP不是当前的域名,也可以成功的跨域
缺点:
- 由于他是script标签,读不到像AJAX那样精确的状态,不知道状态码、响应的头,只知道成功和失败
- 由于它是script标签,他只能发get请求,不支持post