spring boot 关于跨域问题
时间: 2024-06-19 22:00:38 浏览: 12
Spring Boot在处理跨域请求时,通常是为了支持前端与后端分离的应用架构中,当客户端(如浏览器)发起 AJAX 请求到不同的域名或端口时,服务器默认会因为同源策略(Same-Origin Policy)而拒绝这些请求。为了解决这个问题,Spring Boot提供了几种方法来处理跨域。
1. **全局启用CORS**:
你可以通过`@EnableWebMvc`注解加上`spring.mvc.cross-origin.enabled=true`配置,然后在`application.properties`或`application.yml`文件中添加CORS相关配置,比如允许特定来源、方法和头信息:
```yaml
spring:
mvc:
cors:
enabled: true
origins: '*' 或 'http://localhost:8080' // 允许特定或所有来源
allowedMethods: '*' // 允许的所有HTTP方法
allowedHeaders: '*' // 允许的所有请求头
```
2. **全局注册CORS Filter**:
使用`@CrossOrigin`注解可以全局注册一个CORS Filter,例如:
```java
@Configuration
@WebFilter(urlPatterns = "/*")
public class CorsConfig implements WebFilterConfigurer {
@Override
public void configureWebFilter(WebFilterRegistry registry) throws Exception {
registry.addFilter(CorsFilter.class).addMappingForAllUrls().applyPermitDefaultValues();
}
}
```
3. **控制器级别处理**:
如果只需要某个或部分Controller响应跨域,可以在方法上使用`@CrossOrigin`:
```java
@RestController
@CrossOrigin(origins = "*", methods = RequestMethod.GET)
public class MyController {
@GetMapping("/api")
public String crossDomainApi() {
// ...
}
}
```
4. **自定义CORS策略**:
如果需要更灵活的控制,可以创建`CorsConfiguration`实例并动态配置:
```java
@Bean
public CorsConfigurationSource corsConfigurationSource() {
UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
CorsConfiguration config = new CorsConfiguration();
// ... 设置配置项
source.registerCorsConfiguration("/**", config);
return source;
}
@Bean
public WebMvcConfigurer corsConfigurer() {
return new WebMvcConfigurer() {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*");
}
};
}
```
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)