2008-11-11 96 views

回答

171

如果瀏覽器接收到ajax請求的重定向響應,會發生什麼情況?

如果服務器發送重定向(又名302響應加上Location:標頭),瀏覽器會自動跟隨重定向。 第二個請求(假設它不是另一個重定向)的響應是暴露給您的程序的內容。

實際上,您無法檢測302響應是否已發生。如果302重定向導致200,那麼你的程序的行爲相同,就好像原始請求直接導致200.

這是我的經驗和behavior called out in the spec

2016更新:時間已經過去了,好消息是,新fetch() API是隻具備提供finer-grained control of how redirects are handled,類似於XHR默認行爲。也就是說,它只適用於執行獲取()的地方本地Polyfill versions of fetch() - 這是基於XHR- continue to have XHR's limitations。幸運的是,native browser support似乎很好。

+32

有趣的是,我遇到了這個問題,因爲我遇到了重定向顯然沒有被遵守的情況......當重定向違反了同一起源策略時,會發生這種情況。 – Gus 2013-05-22 00:32:57

7

ajax-request將遵循重定向afaik。實際內容(.responseText.responseXML)將是您重定向到的頁面中的內容。

您可能會攔截readyState 2或3上的重定向(status-code,location-header),但不確定。

+0

不是,所有這些州都有相同的地位。即使getAllResponseHeaders()的值是相等的。 – sebastianwagner 2014-10-24 12:03:27