zoukankan      html  css  js  c++  java
  • 通过定义过滤器filter解决跨域问题

            跨域是比较常见问题,比较简单的方式就是直接定义一个过滤器filter,然后在请求头里面加上一些参数。下面来看看具体的写法吧。

    一、java代码

    package com.hj.userapi.core.filter;
    
    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.FilterConfig;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletResponse;
    
    /**
     * 功能描述:解决跨域过滤器 
     * 2017年9月4日
     */
    public class ContextFilter implements Filter{
        private final int time = 20*24*60*60;
        /**
         * @see javax.servlet.Filter#init(javax.servlet.FilterConfig)
         */
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
            // TODO Auto-generated method stub
            
        }
    
        /**
         * @see javax.servlet.Filter#doFilter(javax.servlet.ServletRequest, javax.servlet.ServletResponse, javax.servlet.FilterChain)
         */
        @Override
        public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
            HttpServletResponse resp = (HttpServletResponse) response;
            // 添加参数,允许任意domain访问
            resp.setHeader("Access-Control-Allow-Origin", "*");
            // 这个allow-headers要配为*,这样才能允许所有的请求头 --- update by zxy  in 2018-10-19
            resp.setHeader("Access-Control-Allow-Headers", "*");
            resp.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
            resp.setHeader("Access-Control-Max-Age", time+"");
            chain.doFilter(request, resp);
        }
    
        /**
         * @see javax.servlet.Filter#destroy()
         */
        @Override
        public void destroy() {
            // TODO Auto-generated method stub
            
        }
    
    }

    二、web.xml中的配置

    	<filter>
    	    <filter-name>contextFilter</filter-name>
    	    <filter-class>com.hj.userapi.core.filter.ContextFilter</filter-class>
    	</filter>
    	<filter-mapping>
    	    <filter-name>contextFilter</filter-name>
    	    <url-pattern>/*</url-pattern>
    	</filter-mapping>

    三、小结

            碰到跨域问题时,可以通过自定义过滤器,然后在请求头上添加参数来解决。

  • 相关阅读:
    AppBoxFuture(六): 前端组件化开发
    AppBoxFuture(五): 分布式文件存储-Store Everything
    Mysql自动填充测试数据
    萌新带你开车上p站(番外篇)
    B站百大UP主党妹被黑客勒索!!!
    合天网络靶场-大规模网络环境仿真服务平台
    XSS语义分析的阶段性总结(二)
    想学习CTF的一定要看这篇,让你学习效率提升80%
    XSS语义分析的阶段性总结(一)
    逆向入门分析实战(二)
  • 原文地址:https://www.cnblogs.com/zeng1994/p/8778513.html
Copyright © 2011-2022 走看看