springboot 项目 跨域
时间: 2024-12-29 22:11:06 浏览: 3
### 如何在 Spring Boot 中配置 CORS
#### 使用 `@CrossOrigin` 注解
为了处理特定端点上的跨域请求,在控制器方法或整个类级别可以应用 `@CrossOrigin` 注解。这使得能够细粒度地控制哪些 URL 可以访问该服务。
```java
@RestController
@RequestMapping("/api")
public class MyController {
@CrossOrigin(origins = "http://example.com") // 指定允许的源
@GetMapping("/hello")
public String hello() {
return "Hello, world";
}
}
```
此方式适用于简单的场景,其中只需要为少数几个端点启用 CORS 政策[^3]。
#### 全局 CORS 配置
对于更复杂的设置或是想要统一管理所有 API 的跨域策略,则可以在应用程序启动时通过实现 WebMvcConfigurer 接口来进行全局性的 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); // 浏览器缓存预检请求的时间长度(秒)
}
}
```
这种方式提供了更大的灵活性,并且更容易维护一致的行为。
如果遇到未配置跨域的情况,可能会看到如下错误信息:“Access to XMLHttpRequest at 'http://localhost:8080/hello' from origin 'http://127.0.0.1:5500' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.” 这是因为缺少必要的响应头来告知客户端其请求被授权[^4]。
另外需要注意的是,当涉及到安全敏感的应用程序时,应当谨慎考虑所使用的 CORS 策略,特别是关于 `.allowedOrigins()` 参数的选择;尽可能具体化而不是采用通配符 "*" 来指定可信任的来源站点[^2]。
阅读全文