Spring Boot 解决跨域问题(CORS 配置教程)

望舒的头像
望舒
标签:
Spring Boot跨域Spring Boot CORS配置跨域请求解决方案前后端分离跨域java

在前后端分离开发中,前端项目通常通过 浏览器 调用后端接口。由于浏览器的 同源策略 限制,如果协议、域名、端口任意一项不同,就会出现 跨域请求问题(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);
    }

}

代码解析

  1. addAllowedMethod("*"):允许所有 HTTP 请求方法。
  2. addAllowedOriginPattern("*"):允许任意来源的请求,避免跨域报错。
  3. addAllowedHeader("*"):允许任意请求头。
  4. setAllowCredentials(true):支持携带 Cookie 信息。
  5. 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