SpringBoot 2.4.0跨域问题出错

错误:

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.

我们沿用之前的配置文件:

@Configuration
public class GlobalCorsConfig implements WebMvcConfigurer{


        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")    //添加映射路径,“/**”表示对所有的路径实行全局跨域访问权限的设置
                    .allowedOrigins("*")    //开放哪些ip、端口、域名的访问权限
                    .allowCredentials(true)  //是否允许发送Cookie信息
                    .allowedMethods("GET","POST", "PUT", "DELETE")     //开放哪些Http方法,允许跨域访问
                    .maxAge(3600)
                    .allowedHeaders("*");     //允许HTTP请求中的携带哪些Header信息
//                    .exposedHeaders("*");   //暴露哪些头部信息(因为跨域访问默认不能获取全部头部信息)
        }

    }

前端请求就会报错.
在这里插入图片描述
而提示的意思是:当设置allowCredentials为true,allowedOrigins的值不能为特殊符号 ,因为在响应头里不能设置"Access-Control-Allow-Origin" 的值为。解决办法有两个:

1. 显式的列出allowedOrigins具体值

2. 使用allowedOriginPatterns替代allowedOrigins

@Configuration
public class WebConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOriginPatterns("*") // SpringBoot2.4.0 [allowedOriginPatterns]代替[allowedOrigins]
                .allowedMethods("*")
                .maxAge(3600)
                .allowCredentials(true);
    }
}

采用注解的方式

在我们程序的控制类中引入**@CrossOrigin**

你可能感兴趣的:(#,Spring,boot)