前后端交互跨域,问题处理 ,Access to XMLHttpRequest...but only one is allowed.

在前后端数据交互的时候控制台报错如下。

一般情况下,服务端按如下设置请求头就可以解决跨域问题

public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
    HttpServletResponse response = (HttpServletResponse) servletResponse;
    HttpServletRequest request = (HttpServletRequest) servletRequest;
    // 指定允许其他域名访问
    response.setHeader("Access-Control-Allow-Origin", "*");
    // 响应类型
    response.setHeader("Access-Control-Allow-Methods", "POST, GET, DELETE, OPTIONS, DELETE");
    // 响应头设置
    response.setHeader("Access-Control-Allow-Headers", "Content-Type, x-requested-with, X-Custom-Header, HaiYi-Access-Token");
    if ("OPTIONS".equals(request.getMethod())){
    response.setStatus(HttpStatus.SC_NO_CONTENT);
    }
    filterChain.doFilter(servletRequest, servletResponse);
}

最近我们后端做了zuul转发,在zuul这里做了跨域设置,然后做业务的Java页做了跨域的设置,也就是说一共有两次跨域设置。所以会提示。

but only one is allowed.

所以,只要让其中一方撤掉filter就可以了,这里建议保留zuul,的设置。不过最好还是通过nodejs来做一层代理来处理跨域问题。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章