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>

    三、小结

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

  • 相关阅读:
    更改EBSserver域名/IP
    iOS Dev (60) 怎样实现 UITextView 中的 placeHolder
    程序猿的量化交易之路(29)--Cointrader之Tick实体(16)
    美团面试中被问到的问题汇总
    汇报措辞:你懂得如何向领导汇报吗(审阅、审批、审阅、批示、查阅)?
    九月份总结
    Android 编程之第三方开发 MaoZhuaWeiBo微博开发演示样例-1
    OLE操作Excel编译错误处理
    在 VS2008 下操作 Excel 的方法总结
    vs2008 ole excel
  • 原文地址:https://www.cnblogs.com/zeng1994/p/8778513.html
Copyright © 2011-2022 走看看