Spring Boot 中如何解决跨域问题?
时间: 2024-02-22 11:58:31 浏览: 24
在 Spring Boot 中解决跨域问题有多种方式,以下是其中的两种:
1. 使用 @CrossOrigin 注解
在 Spring Boot 的 Controller 层中,可以使用 @CrossOrigin 注解来解决跨域问题。例如:
```
@RestController
public class MyController {
@CrossOrigin
@GetMapping("/hello")
public String hello() {
return "Hello, world!";
}
}
```
使用 @CrossOrigin 注解可以实现简单的跨域请求,但是如果需要更细粒度的控制,就需要使用其他的方式。
2. 自定义 CorsFilter
Spring Boot 中可以自定义 CorsFilter 来处理跨域请求。CorsFilter 是一个过滤器,可以在请求处理之前拦截请求,并进行相应的处理。例如:
```
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowedOrigins(Arrays.asList("*")); // 允许所有域名
config.setAllowedMethods(Arrays.asList("*")); // 允许所有 HTTP 方法
config.setAllowedHeaders(Arrays.asList("*")); // 允许所有请求头
config.setMaxAge(1800L); // 预检请求的有效期,单位为秒
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
}
```
上面的代码中,我们通过 CorsConfiguration 来配置允许的域名、HTTP 方法、请求头和预检请求的有效期等信息。然后将这个配置注册到 UrlBasedCorsConfigurationSource 中,并返回一个 CorsFilter 对象,这样就可以处理跨域请求了。
以上两种方式都可以用来解决跨域问题,具体使用哪种方式可以根据实际情况来决定。