不用调整Nginx,SpringBoot也能解决前端访问的跨域问题
- 2021 年 8 月 29 日
- 筆記
- JAVA, springboot, 跨域
1、什么情况下会出现跨域问题
通常,在前端工程师的开发过程中,往往在本地机器启动前端服务, 而调用的后端接口服务是在另外一台机器运行,这时就会出现跨域问题,让接口无法调通。
而到了测试环境和生产环境,可以使用Nginx去解决这个问题。
这里我们仅考虑开发环境,在不借助Nginx的情况下,解决跨域。
2、解决方案
在SpringBoot工程中,增加跨域配置即可。
3、实现
新增一个跨域配置类 CrossDomainConfig,在其中配置允许跨域访问的url、请求方式、Header等。代码如下:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; @Configuration public class CrossDomainConfig{ public CrossDomainConfig() { } private CorsConfiguration buildConfig() { // 添加cors配置信息 CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("//localhost:8080"); // * 代表所有url corsConfiguration.addAllowedOrigin("*"); // 设置允许请求的方式 corsConfiguration.addAllowedMethod("*"); // 设置允许的header corsConfiguration.addAllowedHeader("*"); // 设置是否发送cookie信息 corsConfiguration.setAllowCredentials(true); return corsConfiguration; } @Bean public CorsFilter corsFilter() { // 为url添加映射路径 UrlBasedCorsConfigurationSource crossDomainSource = new UrlBasedCorsConfigurationSource(); crossDomainSource.registerCorsConfiguration("/**", buildConfig()); // 返回重新定义好的配置 return new CorsFilter(corsSource); } }
重启后台工程,会发现,跨域问题被如此简单的解决了。