SpringBoot给所有接口配置跨域的方法详解
作者:兔子先生°
简单而言,跨域请求就是当一台服务器资源从另一台服务器(不同 的域名或者端口)请求一个资源或者接口,就会发起一个跨域 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.properties
或application.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接口配置跨域的资料请关注脚本之家其它相关文章!