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

這種情況的話,前端無法得到HTTP回應碼,這只能在后端去處理,在前后分離的狀態里,盡量不要在后端直接重定向,而是輸出對應的回應結果,由前端完成重定向作業,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/232974.html
標籤:JavaScript
上一篇:vue使用webpack打包失敗
下一篇:js 日期時間的格式化
