springboot处理跨域问题
时间: 2023-10-14 08:00:46 浏览: 134
在Spring Boot中处理跨域问题可以通过以下步骤进行:
1. 添加跨域配置类:创建一个类并注解为`@Configuration`,并实现`WebMvcConfigurer`接口。在该类中重写`addCorsMappings`方法。
```java
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**") // 允许跨域访问的路径
.allowedOrigins("*") // 允许跨域访问的源
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS") // 允许请求方法
.allowCredentials(true) // 是否发送cookie
.maxAge(3600); // 预检间隔时间
}
}
```
2. 注册跨域配置类:在`Application`类上添加注解`@EnableWebMvc`,并将跨域配置类添加到Spring Boot应用中。
```java
@SpringBootApplication
@EnableWebMvc
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
```
3. 配置全局跨域过滤器(可选):如果上述方法无法解决跨域问题,可以使用全局跨域过滤器。
```java
@Component
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CorsFilter implements Filter {
@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletResponse response = (HttpServletResponse) res;
HttpServletRequest request = (HttpServletRequest) req;
response.setHeader("Access-Control-Allow-Origin", "*");
response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
response.setHeader("Access-Control-Allow-Headers", "Authorization, Content-Type, Accept");
response.setHeader("Access-Control-Max-Age", "3600");
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
response.setStatus(HttpServletResponse.SC_OK);
} else {
chain.doFilter(req, res);
}
}
// 省略其他方法
}
```
通过以上步骤,你就可以在Spring Boot中成功处理跨域问题了。请注意,跨域配置应该根据你的实际需求进行调整,例如允许的源、方法和头部等。
阅读全文