SpringBoot解决跨域问题

时间:2022-07-23
本文章向大家介绍SpringBoot解决跨域问题,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

方案一

在请求的方法或者Controller上加上@CrossOrigin注解,如下

@CrossOrigin
@RequestMapping("attention")
public ResponseVO auditAttention(@Context HttpServletRequest request, @Context HttpServletResponse response) {
}

方案二

配置一个全局的跨域管理器

@Configuration
public class CORSConfiguration {
    @Bean
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurerAdapter() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry.addMapping("/**")
                        .allowedOrigins("*")
                        .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS")
                        .allowCredentials(false).maxAge(3600);
            }
        };
    }
}

其他尝试过的无效的方案

方案1
response.addHeader("Access-Control-Allow-Origin", "*");
response.addHeader("Access-Control-Allow-Credentials", "true");
response.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");
response.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN");

方案2
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, HEAD");
response.setHeader("Access-Control-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "access-control-allow-origin, authority, content-type, version-info, X-Requested-With");

上面的方案或者上面方案的变体我尝试过不下50次,依然无效,也不知道什么原因,找了2天没找到问题所在,总而言之就是配置了跟没配置一样,理论上如果你配置了,在响应的报文头部会出现以下字样

在这里插入图片描述

但我不管有没有进行如下设置,响应头依然是下面这样的

在这里插入图片描述

总结

我尝试过的就这几种,单单说后台好像还有其他的解决方案,但我没有尝试过,其他的需要前端配合的也有解决方案吧,比如jsonp。

参考:http://www.spring4all.com/article/177