Spring Boot 解决跨域问题(CORS 配置教程)
在前后端分离开发中,前端项目通常通过 浏览器 调用后端接口。由于浏览器的 同源策略 限制,如果协议、域名、端口任意一项不同,就会出现 跨域请求问题(CORS Issue)。 为了保证前后端能够正常通信,我们需要在 Spring Boot 项目中开启跨域配置。
跨域问题的解决方案
在 Spring Boot 中,可以通过配置 CorsWebFilter
来全局解决跨域问题。以下代码演示了一个通用的配置方式:
复制
展开
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.reactive.CorsWebFilter;
import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
@Configuration
public class WebConfiguration {
@Bean
public CorsWebFilter requestCorsProcess() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
// 允许所有请求方法:GET、POST、PUT、DELETE 等
corsConfiguration.addAllowedMethod("*");
// 允许所有来源跨域请求
corsConfiguration.addAllowedOriginPattern("*");
// 允许所有请求头
corsConfiguration.addAllowedHeader("*");
// 允许携带 Cookie
corsConfiguration.setAllowCredentials(true);
// 预检请求缓存时间(秒)
corsConfiguration.setMaxAge(3600L);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", corsConfiguration);
return new CorsWebFilter(source);
}
}
代码解析
addAllowedMethod("*")
:允许所有 HTTP 请求方法。addAllowedOriginPattern("*")
:允许任意来源的请求,避免跨域报错。addAllowedHeader("*")
:允许任意请求头。setAllowCredentials(true)
:支持携带 Cookie 信息。setMaxAge(3600L)
:设置预检请求(OPTIONS)的缓存时间,减少跨域请求开销。
注意事项
- 如果需要 限制跨域来源,可以将
"*"
改为指定的域名,例如:
复制
展开
corsConfiguration.addAllowedOriginPattern("https://example.com");
- 该配置适用于 Spring WebFlux,如果是基于 Spring MVC 的项目,可以通过
WebMvcConfigurer
来配置。
通过以上配置,Spring Boot 项目即可完美解决 跨域请求(CORS) 问题,保证前后端交互正常。
作者:https://blog.xn--rpv331d.com/望舒
链接:https://blog.xn--rpv331d.com/望舒/blog/102
转载注意保留文章出处...
No data