配置跨域后,框架帮我们做了什么?

跨域问题

现在绝大多数公司的项目都是前后端分离的,前后端分离后势必会遇到跨域问题。如下图

继续debug发现,reponse为undefined,提示消息为Network Error。

所以当你和前端联调的时候一直请求失败,报网络错误,一般情况下是后端没有做跨域配置。

注意此时并不是后端没有收到请求,而是收到请求了,也返回结果了,但是浏览器将结果拦截了,并且报错。

同源策略

那么浏览器为什么会报错呢?

因为浏览器基于安全考虑而引入的同源策略

当协议+域名+端口三者都相同时,才不会产生跨域问题,即同源。此时才能读取到服务端的响应

当前url 请求url 是否跨域
https://www.javashitang.com http://www.javashitang.com 是,协议不同
https://www.javashitang.com http://book.javashitang.com 是,域名不同
https://www.javashitang.com http://www.javashitang.com:8000 是,端口不同

为什么要有同源策略呢?

当然是为了安全起见,举个例子,以银行转账为例,看看你的钱是怎么没的

这就是著名的CSRF攻击(跨站请求伪造,当然还有很多其他方式),还有如果第5步不对请求的来源进行校验,那么你的钱已经被转走了

html页面中的如下三个标签是允许跨域加载资源的

 
 
 
 
  1.   
  2.  
  3.  
  4.  
  5.  

如何解决跨域

虽然同源策略保证了安全,但一些合理的用途也会受到影响。解决跨域的方式有很多种,简单介绍2个

JSONP

JSONP主要是利用