springboot 设置跨域白名单
时间: 2025-05-26 17:24:02 浏览: 13
### Spring Boot 中设置跨域白名单的方法
在 Spring Boot 应用程序中,可以通过多种方式来配置跨域请求支持并设置跨域白名单。以下是两种常见的方法:通过 `CorsFilter` 和使用注解 `@CrossOrigin`。
#### 方法一:通过自定义 `CorsFilter`
可以创建一个配置类并通过 `CorsFilter` 来管理跨域策略。这种方式更加灵活,适合复杂的跨域需求场景。
```java
package com.example.demo.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
CorsConfiguration corsConfiguration = new CorsConfiguration();
// 设置允许的域名白名单
corsConfiguration.setAllowedOrigins(List.of("http://example.com", "https://anotherdomain.com"));
// 允许所有的HTTP方法
corsConfiguration.addAllowedMethod("*");
// 允许所有的头部信息
corsConfiguration.addAllowedHeader("*");
// 是否允许发送Cookie
corsConfiguration.setAllowCredentials(true);
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
source.registerCorsConfiguration("/**", corsConfiguration);
return new CorsFilter(source);
}
}
```
此代码片段展示了如何通过编程的方式设置跨域白名单[^3]。其中,`setAllowedOrigins` 方法用于指定哪些源被允许访问资源。
---
#### 方法二:使用注解 `@CrossOrigin`
对于简单的跨域需求,可以直接在控制器方法上使用 `@CrossOrigin` 注解。这种方法适用于特定接口级别的跨域配置。
```java
@RestController
@RequestMapping("/api/users")
public class UserController {
@Autowired
private UserService userService;
@CrossOrigin(origins = {"http://example.com", "https://anotherdomain.com"})
@GetMapping("/{id}")
public User getUserById(@PathVariable Long id) {
return userService.getUserById(id);
}
@PostMapping("/create")
public ResponseEntity<String> createUser(@RequestBody User user) {
userService.createUser(user);
return ResponseEntity.ok("User created successfully.");
}
}
```
在此示例中,`@CrossOrigin` 注解指定了允许的跨域来源列表。它仅应用于标注的具体方法或整个控制器类[^5]。
---
#### 配置文件中的跨域设置(可选)
虽然不推荐直接在 `application.properties` 或 `application.yml` 文件中进行复杂跨域配置,但对于简单场景仍可通过以下方式进行基本配置:
**application.properties**
```properties
spring.mvc.cors=true
spring.mvc.cors.allowed-origins=http://example.com,https://anotherdomain.com
spring.mvc.cors.allowed-methods=GET,POST,PUT,DELETE
spring.mvc.cors.allowed-headers=*
spring.mvc.cors.allow-credentials=true
```
以上配置启用了全局 CORS 支持,并设置了允许的起源、方法和头信息[^2]。
---
### 注意事项
1. **安全性考虑**
跨域白名单应严格限定为实际需要访问的应用地址,避免通配符 (`*`) 过于宽松而导致潜在的安全风险。
2. **优先级问题**
如果同时存在全局配置和局部注解,则局部注解会覆盖全局配置的行为。
3. **调试工具**
使用浏览器开发者工具或者 Postman 测试 API 接口时,注意观察响应头是否包含正确的 CORS 信息,例如 `Access-Control-Allow-Origin`。
---
阅读全文
相关推荐
















