码迷,mamicode.com
首页 > 编程语言 > 详细

Springboot 2.4.0跨域配置无效及接口访问报错(解决方法)allowedOrigins cannot contain the special value "*"

时间:2021-03-02 12:28:35      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:explicit   lease   size   path   接口   cannot   配置   start   lookup   

异常:

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.

原因:Springboot版本高于2.4.0 才会出现这样的问题,再结合报错信息提示不能使用*号设置允许的Origin,所以有两个解决方法。

解决方法1:

降低SpringBoot版本。在pom.xml中修改springboot版本值,并刷新

 <modelVersion>4.0.0</modelVersion>
 <parent>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-parent</artifactId>
  <version>2.3.5.RELEASE</version>
  <relativePath/> <!-- lookup parent from repository -->
 </parent>

解决方法2:

如果不降低版本,则在跨域设置时使用setAllowedOriginPatterns方法。(亲测有效)

修改前:

    /**
     * 跨域配置
     */
    @Bean
    public CorsFilter corsFilter()
    {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        // 是否允许请求带有验证信息
        config.setAllowCredentials(true);
 // 设置访问源地址
        config.addAllowedOrigin("*");
        // 设置访问源请求头
        config.addAllowedHeader("*");
        // 设置访问源请求方法
        config.addAllowedMethod("*");
        // 对接口配置跨域设置
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }

修改后:

    /**
     * 跨域配置
     */
    @Bean
    public CorsFilter corsFilter()
    {
        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
        CorsConfiguration config = new CorsConfiguration();
        // 是否允许请求带有验证信息
        config.setAllowCredentials(true);

        // 允许访问的客户端域名
        // (springboot2.4以上的加入这一段可解决 allowedOrigins cannot contain the special value "*"问题)
        List<String> allowedOriginPatterns = new ArrayList<>();
        allowedOriginPatterns.add("*");
        config.setAllowedOriginPatterns(allowedOriginPatterns);

        // 设置访问源地址
       // config.addAllowedOrigin("*");
        // 设置访问源请求头
        config.addAllowedHeader("*");
        // 设置访问源请求方法
        config.addAllowedMethod("*");
        // 对接口配置跨域设置
        source.registerCorsConfiguration("/**", config);
        return new CorsFilter(source);
    }

 

Springboot 2.4.0跨域配置无效及接口访问报错(解决方法)allowedOrigins cannot contain the special value "*"

标签:explicit   lease   size   path   接口   cannot   配置   start   lookup   

原文地址:https://www.cnblogs.com/technicist/p/14466665.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!