为使用Spring Boot的Web应用更改CORS规则

写接口的时候一直要配置HTTP header中的CORS规则来控制跨域调用,之前在直接使用Servlet的时候都是直接修改,现在改用Spring Boot,就找了一下使用Bean来设置内置的Spring MVC的CORS规则的方法。

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;

@Configuration
public class CorsConfiguration {
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**").allowedOrigins("*");
            }
        };
    }
}

/** 是Spring的拦截器的写法,两个*代表可以匹配多个层级

这里配置了允许一切域名使用这个数据。

注:CORS规则只对浏览器生效,后台接口访问则不受此限,可以说是防君子不妨小人,一众使用github issue的评论系统都需要一个github oauth接口的代理,就是为了给它的包加上CORS头,让页面可以访问这个数据。