跨域

103 阅读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 跨域

如果有两个网站都是我的,我就是想让子网站去访问另一个网站网址里面的数据应该怎么办呢?
只需要被范问的网站在响应头里写子网站可以访问即可。这就是CORS。
实现CORS通信的关键是服务器。只要服务器实现了CORS接口,就可以跨源通信。