如何在Spring MVC中处理跨域?
时间: 2024-10-16 14:21:08 浏览: 12
在Spring MVC中处理跨域通常涉及两个解决方案:
1. **全局配置**[^1]:
- 使用Spring的`WebMvcConfigurer`接口,如`MyConfiguration`类所示。这个类实现了`addCorsMappings`方法,用于添加CORS(Cross-Origin Resource Sharing)配置。通过这个方法,你可以定义全局的跨域策略,比如允许来自任何源的请求,支持特定的方法(GET、POST等),并允许发送Cookie。
```java
@Configuration
public class MyConfiguration implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowCredentials(true)
.allowedOrigins("*")
.allowedMethods(Arrays.asList("GET", "POST", "PUT", "DELETE"))
.allowedHeaders("*")
.exposedHeaders("*");
}
}
```
2. **控制器级别配置**:
- 如果只需要在某个特定控制器或路由上设置跨域,可以在REST控制器中直接操作HTTP响应头,如`TestController`中的`test`方法。这里设置了`Access-Control-Allow-Origin`头来指定允许的源为"*",表示接受所有来源的请求。
```java
@RestController
public class TestController {
@RequestMapping("/test")
public HashMap<String, Object> test(HttpServletResponse response) {
response.setHeader("Access-Control-Allow-Origin", "*");
// ...其他业务逻辑
}
}
```
全局配置方式更便于管理,而控制器级别配置则更为灵活,但可能会导致每个请求都需要检查响应头,增加了代码复杂性。
阅读全文