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接口配置跨域的资料请关注脚本之家其它相关文章!

相关文章

  • 详解Spring Boot下使用logback 记录多个文件日志

    详解Spring Boot下使用logback 记录多个文件日志

    这篇文章主要介绍了详解Spring Boot下使用logback 记录多个文件日志,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • JDBC下Idea添加mysql-jar包的详细过程

    JDBC下Idea添加mysql-jar包的详细过程

    这篇文章主要介绍了JDBC下Idea添加mysql-jar包的详细过程,添加jar包首先到官网下载jar包,然后idea导入jar包,在就是检查,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11
  • springboot中使用okhttp3的小结

    springboot中使用okhttp3的小结

    OkHttp3是一个Java HTTP客户端,可以处理各种请求类型,比如 GET、POST、PUT 等,并且支持高效的 HTTP 连接池、请求和响应缓存、以及异步请求处理等,感兴趣的可以了解一下
    2025-09-09
  • 打造一款代码命名工具的详细教程

    打造一款代码命名工具的详细教程

    这篇文章主要介绍了来,我们一起打造一款代码命名工具,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Java实现Redisson分布式锁的10大陷阱与避坑指南

    Java实现Redisson分布式锁的10大陷阱与避坑指南

    本文介绍了Redisson分布式锁的基础用法与高级特性,包括基本锁操作、公平锁、读写锁、联锁和红锁等实现方式,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2026-04-04
  • Java SSM框架讲解

    Java SSM框架讲解

    这篇文章主要介绍了什么是SSM框架,SSM框架是spring、spring MVC 、和mybatis框架的整合,是标准的MVC模式。想进一步了解的同学可以详细参考本文
    2023-03-03
  • Mybatis之#{}与${}的区别使用详解

    Mybatis之#{}与${}的区别使用详解

    这篇文章主要介绍了Mybatis之#{}与${}的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06
  • Spring配置文件中密码明文改为密文处理的通用方式

    Spring配置文件中密码明文改为密文处理的通用方式

    SpringBoot和SpringCloud中涉及多个配置文件,配置文件中对于密码默认是明文方式,这种方式在生产环境一般是不被允许的,为避免配置文件中出现明文,应当在配置文件中配置为密文,然后在启动时在程序内部完成解密,本文提供了通用的处理方式,需要的朋友可以参考下
    2025-01-01
  • java实现百度云文字识别接口代码

    java实现百度云文字识别接口代码

    这篇文章主要为大家详细介绍了java实现百度云文字识别的接口代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-11-11
  • Java中toString方法的深度解析与应用场景详解

    Java中toString方法的深度解析与应用场景详解

    这篇文章主要介绍了Java中的toString方法及其重写的重要性和注意事项,包括信息的完整性、简洁性、格式的统一性、避免性能问题和递归循环等问题,文中将解决的办法介绍的非常详细,需要的朋友可以参考下
    2025-04-04

最新评论