springboot项目跨域问题处理_跨域

如上如图所示,请求项目接口提示:java.lang.IllegalArgumentException: 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.

问题中的异常提示很明确:当allowCredentials设置为true时,你不能在allowedOrigins中包含特殊值"*"。这是因为无法在Access-Control-Allow-Origin响应头中设置这个特殊值。如果你想对一组来源允许凭证,你应该明确地列出它们,或者考虑使用allowedOriginPatterns

解决方案:

  1. 明确列出允许的源
    如果你知道哪些源应该接收凭证,你可以将它们明确地添加到allowedOrigins列表中。例如:
allowedOrigins: ["http://example.com", "http://example2.com"]
  1. 使用allowedOriginPatterns
    如果你想根据某种模式来允许源,你可以使用allowedOriginPatterns。例如:
allowedOriginPatterns: ["http://*.example.com"]

这样,所有来自以.example.com结尾的URL都将被允许。
3. 不要设置allowCredentialstrue
如果你不想对任何来源都允许凭证,你可以简单地不设置或设置allowCredentialsfalse

根据你的具体需求和情况,选择合适的解决方案。如果你提供更多关于你的代码和使用的库的信息,我可能能提供更具体的帮助。

下面的是我的跨域处理代码,不设置allowCredentialstrue,将@Configuration注释即可。

/**
 * <h3>gsoft-newgrand-n3c</h3>
 * <p>CORS跨域</p>
 *
 * @author : jyh
 * @date : 2019/10/28
 */
//@Configuration
public class CustomCORSConfiguration {
    private CorsConfiguration buildConfig() {
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedOrigin("*");
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod("*");
        corsConfiguration.setAllowCredentials(true);
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        source.registerCorsConfiguration("/**", buildConfig());
        return new CorsFilter(source);
    }
}