zoukankan      html  css  js  c++  java
  • springboot 跨域 请求处理

    1.springboot的配置项

    @Configuration
    public class WebMvcConfig extends WebMvcConfigurationSupport {
    
     
    
    //    @Override
    //    public void addCorsMappings(CorsRegistry corsRegistry){
    //        /**
    //         * 所有请求都允许跨域,使用这种配置就不需要
    //         * 在interceptor中配置header了
    //         */
    //        corsRegistry.addMapping("/**")
    //                .allowCredentials(true)
    //                .allowedOrigins("*")
    //                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
    //                .allowedHeaders("*")
    //                .maxAge(3600);
    //    }
    }
    

    2.拦截器中处理

    添加拦截器

     @Autowired
        private AuthInterceptor authInterceptor;
    
    //    @Override
    //    public void addCorsMappings(CorsRegistry corsRegistry){
    //        /**
    //         * 所有请求都允许跨域,使用这种配置就不需要
    //         * 在interceptor中配置header了
    //         */
    //        corsRegistry.addMapping("/**")
    //                .allowCredentials(true)
    //                .allowedOrigins("*")
    //                .allowedMethods("POST", "GET", "PUT", "OPTIONS", "DELETE")
    //                .allowedHeaders("*")
    //                .maxAge(3600);
    //    }
    
    
        /**
         * 添加自定义拦截器
         */
        @Override
        protected void addInterceptors(InterceptorRegistry registry) {
            registry.addInterceptor(authInterceptor)
                    .addPathPatterns("/**")//拦截的访问路径,拦截所有
                    .excludePathPatterns("/static/*")//排除的请求路径,排除静态资源路径
                    .excludePathPatterns("/user/login")
                    .excludePathPatterns("/user/getUserInfo")
                    .excludePathPatterns("/error")
                    .excludePathPatterns("/swagger-resources/**", "/webjars/**", "/v2/**", "/swagger-ui.html/**");
            ;
            super.addInterceptors(registry);
        }  

      拦截器处理

    /**
     * TODO
     *
     * @author hs
     * @date 2020/12/28 15:47
     */
    @Component
    public class AuthInterceptor implements HandlerInterceptor {
    
        @Autowired
        GdUserService userService;
        @Autowired
        GdRoleService roleService;
        @Autowired
        GdAuthService authService;
    
        /**
         * 在整个请求结束之后被调用,DispatcherServlet 渲染视图之后执行(进行资源清理工作)
         */
        @Override
        public void afterCompletion(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, Exception arg3) throws Exception {
    
        }
    
        /**
         * 请求处理之后进行调用,但是在视图被渲染之前(Controller方法调用之后)
         */
        @Override
        public void postHandle(HttpServletRequest arg0, HttpServletResponse arg1, Object arg2, ModelAndView arg3) throws Exception {
    
        }
    
    
        /**
         * 在请求处理之前进行调用(Controller方法调用之前)
         *
         * @return 返回true才会继续向下执行,返回false取消当前请求
         */
        @Override
        public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object arg2) throws Exception {
            response.setHeader("Access-Control-Allow-Origin", "*");
            response.setHeader("Access-Control-Allow-Credentials", "true");
            response.setHeader("Access-Control-Allow-Methods", "*");
            response.setHeader("Access-Control-Allow-Headers", "Content-Type,userToken");
            response.setHeader("Access-Control-Expose-Headers", "*");
    
            if (request.getMethod().equals("OPTIONS")) {
    //            returnJson(response,null );
                return true  ;
    
            }
      //鉴权业务逻辑
      //………………
    return true ; } private void returnJson(HttpServletResponse response, String json) throws Exception{ PrintWriter writer = null; response.setCharacterEncoding("UTF-8"); response.setContentType("text/html; charset=utf-8"); try { writer = response.getWriter(); writer.print(json); } catch (IOException e) { System.out.println("response error"+e.toString()); } finally { if (writer != null) writer.close(); } } }

      

  • 相关阅读:
    python字符串字典列表互转
    列表迭代器 ListIterator
    并发修改异常处理
    二月天 案例
    Calendar类
    Date类
    冒泡排序
    内部类
    python第三天
    Layui——checkbox使用
  • 原文地址:https://www.cnblogs.com/heshana/p/15508157.html
Copyright © 2011-2022 走看看