同源
源=协议+域名+端口号
如果两个url的协议、域名、端口号完全一致,那么这两个url就是同源的。
可以通过window.origin或location.origin得到当前源。
https://wang.com
https://ergou.com
//不同源,域名不一致(记住:只有完全一模一样才算同源)
http://wang.com/index.html
http://wang.com/server.php
//同源
localhost 调用 127.0.1
//不同源
跨域
跨域即浏览器试图执行其他网站的脚本。但是由于同源策略的限制,导致我们无法实现跨域。
JSONP 跨域
我们在跨域的时候由于当前的浏览器不支持CORS或者因为某些条件不支持CORS,必须使用另外一种方式来跨域,于是我们就请求一个JS文件,这个JS文件会执行一个回调,回调里面就有我们需要的数据。
let script = document.createElement('script');
script.src = 'http://www.wang.cn/login?username=wang&callback=callback';
document.body.appendChild(script);
function callback(res) {
console.log(res);
}
CORS 跨域
如果wang.com和ergou.com这两个网站都是我的,我就是想让wang.com去访问ergou.com里面的数据应该怎么办?
只需要wang.com在响应头里写ergou.com可以访问即可。这就是COR。
实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。