天天看点

Access-Control-Allow-Origin跨域问题,奇葩的抽风现象!!!

现象:今天在做服务器迁移时,跨域拦截死活不让通过,,,生产系统是采取前后端分离,前端用的是Vue,各种度各种方法各种试,这大把大把的时间花花流失。。。

1、第一种方式:从浏览器属性中加配置“--args --disable-web-security --user-data-dir” 。。。效果没什么卵用

Access-Control-Allow-Origin跨域问题,奇葩的抽风现象!!!

google浏览器右键属性,《目标》中在最后加入“--args --disable-web-security --user-data-dir”

2、第二种方式:在Java 中的HandlerInterceptor中对《Access-Control-Allow-Origin》进行拦截,因为是生产系统运行了好久,基本不会出什么问题,但还是check一下

Access-Control-Allow-Origin跨域问题,奇葩的抽风现象!!!

public class HandlerInterceptor implements HandlerInterceptor {

    @Override

    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)

            throws Exception {

        response.addHeader("Access-Control-Allow-Origin", "*");

        response.addHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept,token,msg");

        response.addHeader("Access-Control-Allow-Methods", "GET, POST, PUT,DELETE");

        response.addHeader("Access-Control-Allow-Credentials", "true");

        return true;

    }

3、第三种方式:配置tomcat

在tomcat的web.xml第500多行加入,加入后重启服务问题解决

<filter>

      <filter-name>CorsFilter</filter-name>

      <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>

      <init-param>

        <param-name>cors.allowed.origins</param-name>

        <param-value>*</param-value>

      </init-param>

    </filter>

    <filter-mapping>

      <filter-name>CorsFilter</filter-name>

      <url-pattern>/*</url-pattern>

    </filter-mapping>