springboot项目如何配置跨域
时间: 2023-11-16 20:57:14 浏览: 40
要在Spring Boot项目中配置跨域,可以使用Spring WebMVC中的@CrossOrigin注解或者使用Spring Boot提供的CorsFilter过滤器。
1. 使用@CrossOrigin注解
在Controller层的方法上添加@CrossOrigin注解来允许跨域请求,如下所示:
```java
@RestController
@RequestMapping("/api")
public class MyController {
@CrossOrigin(origins = "http://localhost:8080")
@GetMapping("/test")
public String test() {
return "Hello World!";
}
}
```
上面的代码中,@CrossOrigin注解允许来自http://localhost:8080的跨域请求访问/test接口。
2. 使用CorsFilter过滤器
在Spring Boot项目中使用CorsFilter过滤器需要在WebSecurityConfigurerAdapter中进行配置,如下所示:
```java
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Override
protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable()
.cors()
.and()
.authorizeRequests()
.anyRequest().permitAll();
}
@Bean
public CorsFilter corsFilter() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
config.setAllowedOrigins(Arrays.asList("*"));
config.setAllowedMethods(Arrays.asList("*"));
config.setAllowedHeaders(Arrays.asList("*"));
config.setMaxAge(1800L);
source.registerCorsConfiguration("/**", config);
return new CorsFilter(source);
}
}
```
上面的代码中,我们首先通过configure(HttpSecurity http)方法关闭了CSRF保护,并启用CORS。然后,在corsFilter()方法中,我们为所有的请求配置了允许所有来源的跨域请求。最后,我们将CorsFilter实例注册到Spring Boot中。