SpringBoot使用addCorsMappings配置跨域无效

宝剑锋从磨砺出,梅花香自苦寒来。这篇文章主要讲述SpringBoot使用addCorsMappings配置跨域无效相关的知识,希望能为你提供帮助。

public void addCorsMappings(CorsRegistry registry) {registry.addMapping(" /**" ) .allowedOrigins(" *" ) .allowedMethods(" POST" , " GET" , " PUT" , " OPTIONS" , " DELETE" ) .allowCredentials(true) .allowedHeaders(" *" ) .maxAge(3600); }

【SpringBoot使用addCorsMappings配置跨域无效】但是使用此方法配置之后再使用自定义拦截器时跨域相关配置就会失效。
原因是请求经过的先后顺序问题,当请求到来时会先进入拦截器中,而不是进入 Mapping 映射中,所以返回的头信息中并没有配置的跨域信息。浏览器就会报跨域异常。
正确的解决跨域问题的方法时使用 CorsFilter 过滤器。代码如下:
private CorsConfiguration corsConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); // 请求常用的三种配置,*代表允许所有,也可以自定义属性(比如 header 只能带什么,只能是 post 方式等) corsConfiguration.addAllowedOrigin(" *" ); corsConfiguration.addAllowedHeader(" *" ); corsConfiguration.addAllowedMethod(" *" ); corsConfiguration.setAllowCredentials(true); corsConfiguration.setMaxAge(3600L); return corsConfiguration; }@Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration(" /**" , corsConfig()); return new CorsFilter(source); }


    推荐阅读