js~ajax獲取后端HTTP狀態的幾種情況


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等

二 重定向

1 如果是同源(域)情況,直接返回重定向接口的狀態碼,下面例子中重定向到/a404接口,這個接口返回狀態碼是404,前端得到的響應碼就是404

    @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");
    }

401
這種情況的話,前端無法得到HTTP響應碼,這只能在后端去處理,在前后分離的狀態里,盡量不要在后端直接重定向,而是輸出對應的響應結果,由前端完成重定向工作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM