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