jquery發起ajax請求到後端接口,後端向前端返回數據,固然也存在後端接口直接重定向(302)到其它接口,而後再向前端返回數據,固然這種狀況須要考慮跨域問題。前端
//測試一下http status $.ajax({ type: "get", url: "/redirect", statusCode: { 401: function () { console.log("401"); }, 404: function () { console.log("404"); }, 200: function () { console.log("200"); }, 302: function () { // 獲取不到當前頁的狀態,由於已經跳轉,直接爲目標頁的狀態 // 目標頁返回是404,則前端接收就是404,固然若是目標頁存在跨域的狀況,那前端是沒有狀態返回的 console.log("302"); } } });
若是隻是後端接口直接返回數據,就使用後端接口狀態,多是200,400,401,403,500等jquery
1 若是是同源(域)狀況,直接返回重定向接口的狀態碼,下面例子中重定向到/a404接口,這個接口返回狀態碼是404,前端獲得的響應碼就是404ajax
@GetMapping("/redirect") public void rerei(HttpServletRequest request, HttpServletResponse response) { response.sendRedirect("http://localhost:9090/a404"); } @GetMapping("/a404") public void a404(HttpServletResponse response){ response.setStatus(404); }
2 若是是跨域狀況,若是目標接口的服務端沒有開啓跨域策略,則不能返回狀態後端
@GetMapping("/redirect") public void rerei(HttpServletRequest request, HttpServletResponse response) { response.sendRedirect("http://www.baidu.com"); }
這種狀況的話,前端沒法獲得HTTP響應碼,這隻能在後端去處理,在先後分離的狀態裏,儘可能不要在後端直接重定向,而是輸出對應的響應結果,由前端完成重定向工做。跨域