最近开发一个项目,采用SpringBoot + Dubbo(nacos和eureka版也可,我都试过了)和 Vue开发。因为是自己写,所以要自己解决跨域(以前都不关心的),踩了好多坑,记录下来。
首先跨域问题是怎么产生的呢?
要先把问题说明白,才能去着手解决问题。
跨域问题:跨域名访问所产生的问题。主要原因是浏览器的同源策略。文章里说的很详细,然后什么是不同源呢?主要看协议、地址、端口。比如说,协议不同http和https,域名不同,端口不同这两个比较明显。
这样浏览器会认为前后端不是同一个源,有安全隐患,所以就把ajax拦了下来。
那我这里先说一下解决的方案,我这边主要是靠后端去解决,因为比较方便。SpringBoot可以按照如下操作一番:
建一个conf文件夹,写配置类:
@Configuration
public class CrosConfig extends WebMvcConfigurationSupport {
/**
* 解决跨域问题
* @param registry
*/
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowCredentials(true)
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.maxAge(3600)
.allowedHeaders("*");
}
}
然后其实就解决了。
如果我们想精确到方法的话,可以使用注解 @CrossOrigin
@CrossOrigin(allowCredentials = "true",origins = "http://localhost:8080")
当然前端要记得把http:// 加上千万别忘了!!!