前後端交互跨域,問題處理 ,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來做一層代理來處理跨域問題。

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