SpringBoot给所有接口配置跨域的方法详解

 更新时间:2025年09月19日 10:16:03   作者:兔子先生°  
简单而言,跨域请求就是当一台服务器资源从另一台服务器(不同 的域名或者端口)请求一个资源或者接口,就会发起一个跨域 HTTP 请求,本文给大家介绍了SpringBoot给所有接口配置跨域的方法,需要的朋友可以参考下

跨域配置方法

在Spring Boot中,可以通过以下几种方式为所有接口统一配置跨域支持:

关键配置说明:

  • ​​allowedOriginPatterns(“*”)​​
    允许所有域名访问(生产环境建议替换为具体域名如 “https://yourdomain.com”)
  • allowedMethods(“*”)​​
    允许所有 HTTP 方法(GET/POST/PUT/DELETE 等)
  • allowCredentials(true)​​
    允许携带 Cookie 等凭证信息(前端需设置 withCredentials: true)
  • maxAge(3600)​​
    预检请求(OPTIONS)结果的缓存时间(单位:秒)

全局CORS配置

通过WebMvcConfigurer接口实现全局跨域配置:

@Configuration
public class CorsConfig implements WebMvcConfigurer {
    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")
                .allowedOrigins("*")
                .allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
                .allowedHeaders("*")
                .allowCredentials(false)
                .maxAge(3600);
    }
}

使用注解方式

在启动类上添加@CrossOrigin注解:

@SpringBootApplication
@CrossOrigin(origins = "*")
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

过滤器方式

创建CORS过滤器实现全局跨域:

@Component
public class CorsFilter implements Filter {
    @Override
    public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 
        throws IOException, ServletException {
        HttpServletResponse response = (HttpServletResponse) res;
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
        response.setHeader("Access-Control-Max-Age", "3600");
        response.setHeader("Access-Control-Allow-Headers", "*");
        chain.doFilter(req, res);
    }
}

配置文件方式

application.propertiesapplication.yml中配置:

# application.properties
spring.mvc.cors.allowed-origins=*
spring.mvc.cors.allowed-methods=GET,POST,PUT,DELETE

# application.yml
spring:
  mvc:
    cors:
      allowed-origins: "*"
      allowed-methods: GET,POST,PUT,DELETE

注意事项

  • 生产环境不建议使用allowedOrigins("*"),应指定具体域名
  • 启用allowCredentials时不能使用通配符*,必须指定具体域名
  • OPTIONS预检请求的缓存时间可通过maxAge设置
  • 前端需要携带自定义请求头时,必须在allowedHeaders中明确声明

以上就是SpringBoot给所有接口配置跨域的方法详解的详细内容,更多关于SpringBoot接口配置跨域的资料请关注脚本之家其它相关文章!

相关文章

  • 百度Java面试题 前200页精选(下)

    百度Java面试题 前200页精选(下)

    这篇文章主要为大家分享了Java面试资源下篇,百度“Java面试题”前200页都在这里了,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • java线程间通讯的一些方法总结

    java线程间通讯的一些方法总结

    这篇文章主要介绍了java线程间通讯的一些方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • sharding-jdbc中的事务详细解读

    sharding-jdbc中的事务详细解读

    这篇文章主要介绍了sharding-jdbc中的事务详细解读,sharding-jdbc在分库分表方面提供了很大的便利性,在使用DB的时候,通常都会涉及到事务这个概念,而在分库分表的环境上再加上事务,就会使事情变得复杂起来,需要的朋友可以参考下
    2023-12-12
  • 如何巧用HashMap一行代码统计单词出现次数详解

    如何巧用HashMap一行代码统计单词出现次数详解

    这篇文章主要给大家介绍了关于如何巧用HashMap一行代码统计单词出现次数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2020-07-07
  • Java老手该当心的13个错误

    Java老手该当心的13个错误

    这篇文章主要介绍了Java老手该当心的13个错误,需要的朋友可以参考下
    2015-04-04
  • Java进行代码克隆检测的7种工具实战对比

    Java进行代码克隆检测的7种工具实战对比

    代码克隆不是简单地"复制粘贴",而是代码的"基因突变",它分为4种类型,每种都让你欲哭无泪,本文主要来讲讲如何使用Java进行代码克隆检测,大家可以根据需要进行选择
    2025-09-09
  • Java在制作jar包时引用第三方jar包的方法

    Java在制作jar包时引用第三方jar包的方法

    这篇文章主要介绍了Java在制作jar包时引用第三方jar包的方法的相关资料,需要的朋友可以参考下
    2016-01-01
  • Mybatis中<if>和<choose>的区别及“=”判断方式

    Mybatis中<if>和<choose>的区别及“=”判断方式

    这篇文章主要介绍了Mybatis中<if>和<choose>的区别及“=”判断方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • SpringBoot的服务注册与发现示例

    SpringBoot的服务注册与发现示例

    本篇文章主要介绍了SpringBoot的服务注册与发现示例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • IDEA搭建SpringBoot离线工程的方法

    IDEA搭建SpringBoot离线工程的方法

    这篇文章主要介绍了IDEA搭建SpringBoot离线工程的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06

最新评论