package com.shy.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.Arrays;
import java.util.Map;
/**
* 解决跨域问题/* 表示全部拦截
*/
@WebFilter(filterName = "loginFilter",urlPatterns = "/*")
public class CrossDomainFilter implements Filter {
//拦截的方法
public void doFilter(ServletRequest req, ServletResponse res, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) req;
HttpServletResponse response = (HttpServletResponse) res;
System.out.println("\n===============================================");
System.out.println("请求路径:"+request.getMethod()+"\t"+request.getRequestURI());
Map<String, String[]> parameterMap = request.getParameterMap();
for (Map.Entry<String, String[]> entry : parameterMap.entrySet()) {
String key = entry.getKey();
String[] value = entry.getValue();
if(value.length == 1) {
System.out.println(key+":"+ value[0]);
}else {
System.out.println(key+":"+ Arrays.toString(value));
}
}
//解决跨域的问题
response.setHeader("Access-Control-Allow-Origin","*");//这里配置的是*,也可以配置为具体的地址,如http://localhost:8080
response.setHeader("Access-Control-Allow-Credentials","true");
response.setHeader("Access-Control-Allow-Headers", "Content-Type,Content-Length, Authorization, Accept,X-Requested-With,X-App-Id, X-Token");
response.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
response.setHeader("Access-Control-Max-Age", "3600");
filterChain.doFilter(request,response);
}
//销毁时候调用的方法
public void destroy() { }
}
Springboot跨域过滤器
最新推荐文章于 2024-08-01 08:00:00 发布
这是一个Java Servlet实现的跨域过滤器,通过`@WebFilter`注解全局拦截请求,设置响应头来允许跨域。过滤器打印请求参数并配置了`Access-Control-Allow-*`相关头部,支持多种HTTP方法。
摘要由CSDN通过智能技术生成