我之前报的错误:
When allowCredentials is true, allowedOrigins cannot contain the special value "*" since that cannot be set on the "Access-Control-Allow-Origin" response header. To allow credentials to a set of origins, list them explicitly or consider using "allowedOriginPatterns" instead.
网上有很多解决手法,都差不多,只需加这段代码:
ListallowedOriginPatterns = new ArrayList<>(); allowedOriginPatterns.add("*"); corsConfiguration.setAllowedOriginPatterns(allowedOriginPatterns);
没有用,我仔细阅读报的错误,其实已经告诉我了,是要这样改:
corsConfiguration.setAllowCredentials ( true );
改:
corsConfiguration.setAllowCredentials ( false );
完整的代理是这样的:
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.reactive.CorsWebFilter; import org.springframework.web.cors.reactive.UrlbasedCorsConfigurationSource; import java.util.ArrayList; import java.util.List;
@Configuration
public class GlobalCorsConfig {
@Bean
public CorsWebFilter CorsWebFilter(){
UrlbasedCorsConfigurationSource source = new UrlbasedCorsConfigurationSource();
CorsConfiguration corsConfiguration = new CorsConfiguration ();
corsConfiguration.addAllowedHeader ( "*" );
corsConfiguration.addAllowedMethod ( "*" );
corsConfiguration.addAllowedOrigin ( "*" );
corsConfiguration.setAllowCredentials ( false );
corsConfiguration.addAllowedOriginPattern("*");
// 允许访问的客户端域名
List allowedOriginPatterns = new ArrayList<>();
allowedOriginPatterns.add("*");
corsConfiguration.setAllowedOriginPatterns(allowedOriginPatterns);
corsConfiguration.setMaxAge(18000L);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了
source.registerCorsConfiguration ( "/**" ,corsConfiguration);
return new CorsWebFilter ( source );
}
}



