虽然对前后端分离之下的通信有了初步认知,今天进行了深入了解跨域。
域:协议 + 域名 + 端口;三者完全相同则为同域,反之有其一不同均为不同域。
跨域请求:当前【发起请求】的域和【请求指向】的域属于不同域时,该次请求称之为跨域请求。
浏览器出于安全的考虑,使用 XMLHttpRequest对象发起 HTTP请求必须遵守同源策略,否则就是跨域的HTTP请求,默认情况下是被禁止的。
跨域HTTP请求是指A域上资源请求了B域上的资源,举例而言,部署在A机器上Nginx上的js代码通过ajax请求了部署在B机器Tomcat上的RESTful接口。
经过查询 解决跨域问题 网上一般提供三种解决方法
- 实现WebMvcConfigurer接口然后重写addCorsMappings方法解决跨域问题
- 使用 @CrossOrigin 注解,在Controller层需要跨域的类或者方法上加上该注解即可。
注:方式1属于全局CORS配置,方式2属于局部CORS配置。如果使用了局部跨域是会覆盖全局跨域的规则,所以可以通过@CrossOrigin注解来进行细粒度更高的跨域资源控制。
3 .Vue中使用proxyTable,proxyTable是 vue-cli 脚手架在开发模式下,为我们提供的一个跨域的代理中转服务器服务.基于 (http-proxy-middleware插件)。
我对proxyTable的理解是proxyTable是让浏览器把报文发给了webpack代理服务器,然后由webpack代理服务器将报文发给后端,我们的项目中是用了该方案作为解决方法。
参考博文:SpringBoot解决跨域问题
<强烈推荐>关于 Vue.proxyTable 是干什么的?以及如何配置?<强烈推荐>