Spring Boot解决跨域问题

Spring Boot解决跨域问题

方法一(常用)

实现接口WebMvcConfigurer,并重写addCorsMappings(CorsRegistry registry)

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowCredentials(true)
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .maxAge(3600);
    }
}

方法二

在上下文中创建一CorsFilter类型的bean,因为http请求到达时序为:filter,servlet,拦截器(HandlerInterceptor)

@Configuration
public class CorsConfig {
    @Bean
    public CorsFilter corsFilter() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setAllowCredentials(true);
        
        UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
        urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration);
        return new CorsFilter(urlBasedCorsConfigurationSource);
    }
}

方法三

向@RequestMapping(其他Mapping注解也行)注解处理程序方法添加一个@CrossOrigin注解

@CrossOrigin

三种方法对比

  • 细粒度(小到大):3 < 1 < 2
  • 版本要求: 3 > 2 >=1
  • 区别:方法1使用WebMvcConfigurer接口,方法2使用filter,方法3使用注解
posted @ 2021-08-16 21:50  鸭梨的药丸哥  阅读(25)  评论(0)    收藏  举报  来源