springboot项目跨域问题解决

Posted ACheng63201

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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分钟)。
    

以上是关于springboot项目跨域问题解决的主要内容,如果未能解决你的问题,请参考以下文章

2019-03-26 SpringBoot项目部署遇到跨域问题,记录一下解决历程

springboot解决跨域问题(Cors)

我们的项目是如何彻底解决Springboot跨域问题的

springboot解决跨域问题跨域

springboot 解决前后端跨域

Web跨域请求及SpringBoot项目解决方案