9

50 阅读1分钟
同源

源=协议+域名+端口号

如果两个url的协议、域名、端口号完全一致,那么这两个url就是同源的。

可以通过window.originlocation.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接口,就可以跨源通信。