美文网首页java
java处理跨域问题

java处理跨域问题

作者: 星钻首席小管家 | 来源:发表于2020-09-21 16:01 被阅读0次

    1.CORSFilter

    
    /**
     * 描述:
     * 跨域处理,依赖servlet api和spring-web
     * @author lcf 2018/4/14
     */
    public class CORSFilter extends OncePerRequestFilter {
    
        private final static Logger log = LoggerFactory.getLogger(CORSFilter.class);
    
        @Override
        protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws
                ServletException, IOException {
            response.addHeader("Access-Control-Allow-Origin", "*");
            response.addHeader("Access-Control-Allow-Headers", "X-Requested-With,X_Requested_With");
            if(request.getHeader("Access-Control-Request-Method") != null && "OPTIONS".equals(request.getMethod())) {
                response.addHeader("Access-Control-Allow-Methods", "HEAD,GET,POST,PUT,DELETE,OPTIONS");
                response.addHeader("Access-Control-Allow-Headers", "Content-Type,Origin,Accept");
                response.addHeader("Access-Control-Max-Age", "120");
            }
    
            filterChain.doFilter(request, response);
        }
    }
    

    2.FilterConfig

    
    /**
     * Filter配置
     *
     * @author LingDu
     * @version 1.0
     */
    @Configuration
    public class FilterConfig {
    
        //跨域filter
        @Bean
        public FilterRegistrationBean CORSFilter(){
            FilterRegistrationBean registrationBean = new FilterRegistrationBean();
    
            CORSFilter filter = new CORSFilter();
            registrationBean.setFilter(filter);
    
            registrationBean.setUrlPatterns(Arrays.asList(new String[]{"/*"}));
    
            return registrationBean;
        }
    
        //shiroFilter
        @Bean
        public FilterRegistrationBean<DelegatingFilterProxy> shiroFilterRegistration() {
            FilterRegistrationBean<DelegatingFilterProxy> registration = new FilterRegistrationBean<>();
            registration.setFilter(new DelegatingFilterProxy("shiroFilter"));
            //该值缺省为false,表示生命周期由SpringApplicationContext管理,设置为true则表示由ServletContainer管理
            registration.addInitParameter("targetFilterLifecycle", "true");
            registration.setEnabled(true);
            registration.setOrder(Integer.MAX_VALUE - 1);
            registration.addUrlPatterns("/*");
            return registration;
        }
    
    }
    

    相关文章

      网友评论

        本文标题:java处理跨域问题

        本文链接:https://www.haomeiwen.com/subject/wuivyktx.html