springboot项目跨域问题解决

springboot项目跨域问题解决

单个配置跨域

添加注解@Crossorigin实现微粒级跨域

全局配置

  • 新建Webconfig类

  • //全局配置注解
    @Configuration
    //可采用@Crossorigin;实现微粒级跨域,全局跨域配置如下:
    public class WebConfig implements WebMvcConfigurer {
        @Override
        public void addCorsMappings(CorsRegistry registry) {
            registry.addMapping("/**")
                    .allowedOrigins("*")
                    .allowedMethods("GET", "POST", "DELETE", "PUT", "OPTIONS")
                    .allowedHeaders("*")
                    .maxAge(3600 * 24);
        }
    }
    
  • 函数说明:

    addMapping:配置可被跨域访问的路径,'*'表示任意路径,也可以具体到直接请求路径。
    allowedOrigins:允许所有的请求域名访问我们的跨域资源,可以固定单条或者多条内容,"http://localhost:8088","null"
        如果出现如下异常
        `Caused by: 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.`
    将allowedOrigins换成allowedOriginPatterns:
    allowCredentials: 响应头表示是否可以将对请求的响应暴露给页面。返回true则可以,其他值均不可以
    注意allowedOrigins(“*”):与allowCredentials(true)冲突
    allowedMethods:允许输入参数的请求方法访问该跨域资源服务器,如:POST、GET、PUT、OPTIONS、DELETE等。
    allowedHeaders:'*'允许所有的请求header访问,也可以自定义设置任意请求头信息
    maxAge:配置客户端缓存预检请求的响应的时间(以秒为单位)。默认设置为1800秒(30分钟)。
    
上一篇:Ubuntu中打开windows中的txt文件,中文显示乱码


下一篇:SpringBoot跨域问题:When allowCredentials is true, allowedOrigins cannot contain the special value “*“sin