SpringBoot浏览器跨域解决

  • 跨域:浏览器同源策略,1995年,同源策略由Netscape公司引入浏览器。目前,所有浏览器都实现这个政策。最初,它的含义是指:A网页设置的Cookie,B网页不能打开,除非这两个网页“同源”。所谓“同源”指的是“三个相同”:协议相同、域名相同、端口相同。一句话描述,浏览器从一个域名的网页去请求另一个域名的资源时,域名、端口、协议任一不同,都是跨域

  • 解决方法

    • JSONP

    • http响应头配置允许跨域

    • 程序代码中处理,SpringBoot通过拦截器配置

      package com.gen.interceptor;
      
      import org.springframework.http.HttpMethod;
      import org.springframework.web.servlet.HandlerInterceptor;
      
      import javax.servlet.http.HttpServletRequest;
      import javax.servlet.http.HttpServletResponse;
      
      /**
       * 解决浏览器跨域拦截器
       */
      public class CorsInterceptor implements HandlerInterceptor {
          @Override
          public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
              // 表示接受任意域名的请求,也可以指定域名
              response.setHeader("Access-Control-Allow-Origin", request.getHeader("origin"));
              // 该字段可选,是个布尔值,表示是否可以携带cookie
              response.setHeader("Access-Control-Allow-Credentials", "true");
              response.setHeader("Access-Control-Allow-Methods", "GET, HEAD, POST, PUT, PATCH, DELETE, OPTIONS");
              response.setHeader("Access-Control-Allow-Headers", "*");
      
              if (HttpMethod.OPTIONS.toString().equals(request.getMethod())) {
                  return true;
              }
              return true;
          }
      }
      
posted @ 2021-04-22 21:35  Gen2021  阅读(125)  评论(0)    收藏  举报