1)使用不同的狀態碼301相比(2 **)(如果AJAX請求),並處理在客戶端重定向:
var STATUS = {
REDIRECT: 280
};
$.post('/redirected', {}, function(response, status, request) {
if (status == STATUS.REDIRECT) {
// you need to return the redirect url
location.href = response.redirectUrl;
} else {
$('#content').html(request.responseText);
}
});
2)不重定向:
我使用在「重定向模式」=重定向後發佈請求(你不想讓用戶刷新發布請求等)。
使用ajax請求,這是沒有必要的,所以當發佈請求是ajax時,我轉而轉向(只是轉發到不同的控制器 - 取決於您的服務器端fra工作,或者你在用什麼......)。 POST請求不會被瀏覽器緩存。
其實,我不知道什麼是你需要的原因,所以這可能不會對你非常有用。這是有益的,當服務器返回比普通請求Ajax請求不同的反應,因爲當瀏覽器重定向Ajax請求,重定向請求不XMLHttpRequest的...
[更新]
您可以訪問頭(中轉發請求)這樣的:
$.post('redirected', {}, function(r, s, req) {
req.getAllResponseHeaders();
req.getResponseHeader('Location');
});
應該有「位置」頭,但它依賴於服務器,這頭被髮回...
你只是得到了什麼是在響應頭。 – epascarello 2010-12-16 21:40:17
xmlHttpRequest.getAllResponseHeaders()似乎沒有給出任何指示它的URL。 – Snea 2010-12-16 21:41:52
有人在客戶端找到任何解決方法嗎?如果沒有Web服務器的控制權,如何捕獲重定向URL。 – 2012-03-28 13:07:28