import java.io.IOException;
import javax.servlet.FilterChain;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.core.annotation.Order;
import org.springframework.web.filter.OncePerRequestFilter;
import org.springframework.core.Ordered;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@WebFilter("/*")
@Order(Ordered.HIGHEST_PRECEDENCE)
public class CrossFilter extends OncePerRequestFilter {
@Override
protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException {
if (request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())) {
// CORS "pre-flight" request
response.setCharacterEncoding("UTF-8");
response.setContentType("application/json;charset=utf-8");
String origin = request.getHeader("Origin");
response.setHeader("Access-Control-Allow-Origin", origin);
response.setHeader("Access-Control-Allow-Credentials", "true");
response.setHeader("Access-Control-Allow-Headers", "Content-Type,X-Requested-With,Token,deviceNo,Authorization,authorization");
response.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
}
filterChain.doFilter(request, response);
}
}
跨域问题
最新推荐文章于 2023-05-15 17:34:42 发布
本文介绍了一个Spring Boot应用中实现跨域请求处理(CORS)的过滤器类。该过滤器通过注解@WebFilter和@Order配置为最高优先级,确保能够首先处理HTTP OPTIONS预检请求,设置响应头允许特定来源的跨域请求,并定义了允许的方法和头部信息。
5万+

被折叠的 条评论
为什么被折叠?



