Springboot3 跨域
时间: 2025-01-14 13:10:10 浏览: 55
### 解决 Spring Boot 3 中的跨域问题
为了在 Spring Boot 3 应用程序中处理跨域资源共享 (CORS),可以采用多种方法来配置 CORS 支持。以下是几种常见的实现方式:
#### 方法一:基于注解的方式
对于简单的场景,可以直接在控制器上使用 `@CrossOrigin` 注解来启用 CORS。
```java
@RestController
@RequestMapping("/api")
public class MyController {
@CrossOrigin(origins = "http://example.com")
@GetMapping("/hello")
public String hello() {
return "Hello, world";
}
}
```
这种方法适用于单个 API 或者少量几个需要特别设置 CORS 的接口[^1]。
#### 方法二:全局配置 WebMvcConfigurer
如果希望在整个应用程序范围内统一管理 CORS 设置,则可以通过定义一个实现了 `WebMvcConfigurer` 接口的 Bean 来完成更复杂的 CORS 配置。
```java
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("*") // 允许所有来源
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.maxAge(3600);
}
}
```
此代码片段展示了如何允许所有的 HTTP 请求方法以及指定的最大缓存时间(单位秒)。请注意,在生产环境中应谨慎考虑是否真的要开放给所有域名访问[^2]。
#### 方法三:自定义 CorsConfigurationSource
当需求更加复杂时,比如根据不同路径应用不同的 CORS 策略,可以选择创建自己的 `CorsConfigurationSource` 实现类来进行细粒度控制。
```java
@Bean
public CorsConfigurationSource corsConfigurationSource() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowCredentials(true); // 是否支持凭证共享,默认false
config.addAllowedOriginPattern("*"); // 添加匹配模式代替具体URL
config.setMaxAge(Long.valueOf(3600));
config.addAllowedHeader("*");
config.addAllowedMethod("*");
source.registerCorsConfiguration("/api/**", config);
return source;
}
```
上述例子说明了怎样针对 `/api/` 下的所有资源设定一致性的 CORS 行为,并启用了凭据共享功能[^4]。
通过以上三种不同层次上的配置选项,可以根据实际项目的规模和安全策略灵活调整 CORS 的行为,从而有效解决跨域请求的问题。
阅读全文
相关推荐


















