zoukankan      html  css  js  c++  java
  • 跨域过滤器配置

    import java.io.IOException;
    import javax.servlet.Filter;
    import javax.servlet.FilterChain;
    import javax.servlet.ServletException;
    import javax.servlet.ServletRequest;
    import javax.servlet.ServletResponse;
    import javax.servlet.http.HttpServletResponse;
    import javax.servlet.http.HttpServletRequest;
    
    /**
     * 跨域配置<br>
     * 跨域资源共享 CORS 详解:http://www.ruanyifeng.com/blog/2016/04/cors.html<br/>
     * HTTP 中文开发手册:https://www.php.cn/manual/view/35587.html
     */
    public class CrossFilter implements Filter {
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain chiain)
            throws IOException, ServletException {
    
            HttpServletRequest request = (HttpServletRequest)servletRequest;
            HttpServletResponse response = (HttpServletResponse)servletResponse;
    
            // 允许跨域的地址*表示所有
            response.setHeader("Access-Control-Allow-Origin", "http://localhost:8848");
            // 表示是否允许发送Cookie
            response.setHeader("Access-Control-Allow-Credentials", "true");
            // 允许跨域的方法
            response.setHeader("Access-Control-Allow-Methods", "POST,GET,OPTIONS,DELETE");
            // 预检请求的有效期,OPTIONS请求就是想服务端进行探测支持的方法
            response.setHeader("Access-Control-Max-Age", "3600");
            // 跨域时允许的请求头字段
            response.setHeader("Access-Control-Allow-Headers",
                "Origin, X-Requested-With, Content-Type, Accept,Token,tokenzsk,tokenzsk1");
            // 检测时直接返回
            if ("OPTIONS".equals(request.getMethod())) {
                response.setStatus(HttpServletResponse.SC_NO_CONTENT);
                return;
            }
            chiain.doFilter(servletRequest, servletResponse);
        }
    }
    
    // 注册过滤器
    @Bean
    public FilterRegistrationBean<CrossFilter> corssFilterRegiste() {
        FilterRegistrationBean<CrossFilter> reFilter = new FilterRegistrationBean<>();
        // 创建并注册TestFilter
        reFilter.setFilter(new CrossFilter());
        // 拦截的路径(对所有请求拦截)
        reFilter.addUrlPatterns("/services/*");
        // 拦截器的名称
        reFilter.setName("CrossFilter");
        // 拦截器的执行顺序。数字越小越先执行
        reFilter.setOrder(1);
        return reFilter;
    }
  • 相关阅读:
    7月30日 举办专注于微服务的.NET Conf Focus
    我和ABP vNext 的故事
    Windows环境搞好的Dockerfile文件 在Linux上报错了
    [LeetCode] 955. Delete Columns to Make Sorted II 删除列使其有序之二
    [LeetCode] 954. Array of Doubled Pairs 两倍数对儿数组
    上周热点回顾(8.3-8.9)团队
    发布新版首页“外婆新家”升级版:全新的UI,熟悉的味道团队
    上周热点回顾(7.27-8.2)团队
    终于换新颜:新版网站首页发布上线团队
    上周热点回顾(7.20-7.26)团队
  • 原文地址:https://www.cnblogs.com/zincredible/p/14196881.html
Copyright © 2011-2022 走看看