SpringMVC 解决跨域问题

在实际开发中,我们经常会遇到前端和后端不在一个域内导致的跨域问题。常见的我们会在服务端增加返回头的方式允许跨域。
通常我们是在拦截器或过滤器中对 response 手动设置返回头的方式支持跨域。
其实 SpringMVC 已经为我们想到了这一点,提供了 CorsRegistry 给我们配置跨域。

具体代码如下(当然 SpringBoot 也是一样的):

1
2
3
4
5
6
7
8
9
10
@Configuration
public class CustomWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {

// 跨域
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*").allowedMethods("GET", "POST", "OPTIONS");
}

}

这种方式更智能,它会判断请求是否跨域,如果是跨域的才返回相应的返回头,不跨域的当然就不用返回。