【不止前端】前端跨域文件简介及场景

一、什么是跨域?

首先声明一点,跨域是浏览器拦截的行为,请求已经发送到后端,后端返回的响应数据被浏览器拦截住了,这就是跨域的流程。

在前端领域中,跨域是指浏览器允许向服务器发送跨域请求,从而克服Ajax只能同源使用的限制。

什么是同源策略

同源策略是一种约定,由Netscape公司1995年引入浏览器,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,浏览器很容易受到XSS、CSFR等攻击。所谓同源是指"协议+域名+端口"三者相同,即便两个不同的域名指向同一个ip地址,也非同源。
同源策略限制以下几种行为:

  • Cookie、LocalStorage 和 IndexDB 无法读取
  • DOM和JS对象无法获得
  • AJAX 请求不能发送

二、常见的跨域场景

URL 说明 是否允许通信
http://www.domain.com/a.js http://www.domain.com/b.js 同一域名,不同文件或路径 允许
http://www.domain.com:8000/a.js http://www.domain.com/b.js 同一域名,不同端口 不允许
http://www.domain.com/a.js https://www.domain.com/b.js 同一域名,不同协议 不允许
http://www.domain.com/a.js http://192.168.4.12/b.js 域名和域名对应相同ip 不允许
http://www.domain.com/a.js http://x.domain.com/b.js http://domain.com/c.js 主域相同,子域不同 不允许
http://www.domain1.com/a.js http://www.domain2.com/b.js 不同域名 不允许