iview axios 跨域配置问题

新手上路,请多包涵

在iview-cli中怎么解决,配置axios跨域问题,请说的的详细点

阅读 4.8k
1 个回答

跨域需要后端的知识,在后端处理,现在只说后端:
(代码前面的也是代码组件部门)
一:写过滤器:
/**

  • desc 自定义跨域过滤器
  • className CorsFilter
  • modify
  • version 1.0
  • since 1.8

*/
public class CorsFilter implements Filter {

private FilterConfig config = null;

@Override
public void init(FilterConfig config) throws ServletException {
    this.config = config;
}

@Override
public void destroy() {
    this.config = null;
}


@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    HttpServletResponse response = (HttpServletResponse) servletResponse;
    HttpServletRequest request = (HttpServletRequest) servletRequest;
    // 允许哪些Origin发起跨域请求,nginx下正常
    // response.setHeader( "Access-Control-Allow-Origin", config.getInitParameter( "AccessControlAllowOrigin" ) );
    response.setHeader( "Access-Control-Allow-Origin", "http://192.168.212.127:8070" );
    // 允许请求的方法
    response.setHeader( "Access-Control-Allow-Methods", "POST, GET, OPTIONS,DELETE,PUT" );
    // 多少秒内,不需要再发送预检验请求,可以缓存该结果
    response.setHeader( "Access-Control-Max-Age", "3600" );
    // 表明它允许跨域请求包含xxx头
    response.setHeader( "Access-Control-Allow-Headers", "Origin, Access-Token,X-Requested-With, Content-Type, Accept" );
    //是否允许浏览器携带用户身份信息(cookie)
    response.setHeader( "Access-Control-Allow-Credentials", "true" );

   // response.setHeader( "Access-Control-Expose-Headers", "*" );
    if (request.getMethod().equals( "OPTIONS" )) {
        response.setStatus( 200 );
        return;
    }
    filterChain.doFilter( servletRequest, response );
}

}

注意:http://192.168.212.127:8070,这个就是前面访问的地址

第二步:在web.xml中配置过滤器

<!-- CORS跨域过滤器 start -->
<filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>bd.store.base.cotroller.CorsFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>
<!--# CORS跨域过滤器 end -->

第三步:前面直接使用,不需要做任何配置