SpringBoot中配置跨域
第一次遇到跨域问题是在自己的毕业设计上,先是前端vue项目中报错跨域问题,在vue的config中配置反向代理解决了。后来去到公司中,发现,直接全局定义请求ip和端口号作为前缀,拼接进请求url中也是不错的办法,一样的方便,配置反向代理的话还要在nginx中同样配置反向代理,反而显得更麻烦了。
SpringBoot这端,一开始以为只要前端配置了跨域就足够,然而发现,主要的跨域问题还是在后端,经过百度,发现SpringBoot解决跨域情趣十分简单,只要在Controller层添加@CrossOrigin注解就能解决,超方便,超快捷。
好的,进入主题。
进到公司后发现公司项目里的Controller上没有配置@CrossOrigin注解,这是怎么回事呢?但是,多了一个我没见过的CorsConfig配置类,代码如下:
package cn.com.wasec.gd_plice.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* 解决跨域问题
*/
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*")
.allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
.allowCredentials(true)
.maxAge(3600)
.allowedHeaders("*");
}
}
上面明确写着解决跨域问题的注释,那么说明这样也是能够解决跨域的。于是百度一下,发现这种方法是Spring内部的一种配置方式,通过实现WebMvcConfigurer,可以添加Spring中很多的配置。
很好的一篇对WebMVCConfigurer的解释的文章,连接如下:
zhangpower1993的博客 WebMvcConfigurer详解
同时趁着这个时候,就想总结下Java或者SpringBoot中解决跨域问题的方案,百度下发现一篇个人认为很好的文章,其中为SpringBoot解决跨域问题提供了四种方法,懒得照搬了,就自己看连接吧:
字母哥博客 详解SpringBoot应用跨域访问解决方案