Odpowiedzi:
Co się stanie, jeśli przeglądarka otrzyma odpowiedź przekierowania na żądanie AJAX?
Jeśli serwer wyśle przekierowanie (inaczej odpowiedź 302 plus nagłówek Location:), przeglądarka automatycznie śledzi przekierowanie. Odpowiedź na drugie żądanie (zakładając, że nie jest to również kolejne przekierowanie) jest tym, co jest widoczne dla twojego programu.
W rzeczywistości nie masz możliwości wykrycia, czy wystąpiła odpowiedź 302. Jeśli przekierowanie 302 prowadzi do 200, program działa tak samo, jakby pierwotne żądanie prowadziło bezpośrednio do 200.
To było zarówno moje doświadczenie, jak i zachowanie określone w specyfikacji .
Aktualizacja 2016: Czas minął i dobrą wiadomością jest to, że nowe API fetch () ma oferować bardziej szczegółową kontrolę nad tym, jak obsługiwane są przekierowania , z domyślnym zachowaniem podobnym do XHR. To powiedziawszy, działa tylko wtedy, gdy funkcja fetch () jest implementowana natywnie . Wersje funkcji fetch () z funkcją wielokrotnego wypełniania - które są oparte na XHR - nadal mają ograniczenia XHR . Na szczęście natywna obsługa przeglądarek wydaje się ładnie dopełniać.
ajax-request
Pójdą przekierowujące AFAIK. Rzeczywista zawartość ( .responseText
, .responseXML
) będzie treścią ze strony, na którą nastąpi przekierowanie.
Możesz być w stanie przechwycić przekierowanie ( status-code
, location-header
) na readyState
2 lub 3, ale nie masz co do tego pewności.
getAllResponseHeaders()
jest równa.