Springboot中处理跨域问题
时间: 2024-03-06 12:49:05 浏览: 62
在Spring Boot中处理跨域问题可以通过配置跨域请求的过滤器来实现。具体实现步骤如下:
1. 创建一个过滤器类,实现javax.servlet.Filter接口。
2. 在过滤器类中添加@Order注解,指定过滤器的执行顺序。
3. 在过滤器类中重写doFilter方法,在方法中添加跨域请求处理代码。
4. 在Spring Boot的配置类中添加@Bean注解,将过滤器类注册到Spring容器中。
以下是一个示例代码:
```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-Max-Age", "3600");
response.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization, Content-Length, X-Requested-With");
if ("OPTIONS".equalsIgnoreCase(request.getMethod())) {
response.setStatus(HttpServletResponse.SC_OK);
} else {
chain.doFilter(req, res);
}
}
}
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter() {
return new CorsFilter();
}
}
```
在上述代码中,过滤器类CorsFilter实现了javax.servlet.Filter接口,并使用@Order注解指定了过滤器的执行顺序。在doFilter方法中,设置了跨域请求的响应头,如果是OPTIONS请求则直接返回200状态码,否则执行下一个过滤器。在配置类CorsConfig中,将CorsFilter注册到Spring容器中。
阅读全文