在前後端數據交互的時候控制檯報錯如下。
一般情況下,服務端按如下設置請求頭就可以解決跨域問題
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來做一層代理來處理跨域問題。