package filter; import javax.servlet.*; import javax.servlet.http.HttpServletResponse; import java.io.IOException; public class CORSFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { Filter.super.init(filterConfig); } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletResponse resp = (HttpServletResponse) servletResponse; // 添加参数,允许任意domain访问 resp.setContentType("text/html;charset=UTF-8"); //禁用缓存,确保网页信息是最新数据 resp.setHeader("Pragma","No-cache"); resp.setHeader("Cache-Control","no-cache"); //允许跨域访问的域,可以是一个域的列表,也可以是通配符”*” resp.setHeader("Access-Control-Allow-Origin", "*"); //允许使用的请求方法,以逗号隔开; resp.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, HEAD, DELETE, PUT"); // 缓存此次请求的秒数。在这个时间范围内,所有同类型的请求都将不再发送预检请求而是直接使用此次返回的头作为判断依据,非常有用,大幅优化请求次数; resp.setHeader("Access-Control-Max-Age", "3600"); //允许自定义的头部,以逗号隔开,大小写不敏感; resp.setHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Authorization, Accept, Origin, User-Agent, Content-Range, Content-Disposition, Content-Description"); resp.setDateHeader("Expires", -10); filterChain.doFilter(servletRequest, resp); } @Override public void destroy() { Filter.super.destroy(); } }
javaWeb解决跨域
最新推荐文章于 2024-04-25 14:26:51 发布