Risposte:
Cosa succede se il browser riceve una risposta di reindirizzamento a una richiesta Ajax?
Se il server invia un reindirizzamento (ovvero una risposta 302 più un'intestazione Location:) il reindirizzamento viene automaticamente seguito dal browser. La risposta alla seconda richiesta (supponendo che non sia anche un altro reindirizzamento) è ciò che è esposto al tuo programma.
In effetti, non hai la possibilità di rilevare se si è verificata una risposta 302. Se il reindirizzamento 302 porta a 200, il programma agisce in modo identico come se la richiesta originale portasse direttamente a 200.
Questa è stata sia la mia esperienza che il comportamento indicato nelle specifiche .
Aggiornamento 2016: il tempo è passato e la buona notizia è che la nuova API fetch () è stata progettata per offrire un controllo più fine su come vengono gestiti i reindirizzamenti , con un comportamento predefinito simile a XHR. Detto questo, funziona solo dove fetch () è implementato in modo nativo . Le versioni Polyfill di fetch (), che sono basate su XHR, continuano ad avere i limiti di XHR . Fortunatamente, il supporto del browser nativo sembra completarsi bene.
Il ajax-request
seguirà che afaik reindirizzamento. Il contenuto effettivo ( .responseText
, .responseXML
) sarà il contenuto della pagina in cui sei reindirizzato.
Potresti essere in grado di intercettare il reindirizzamento ( status-code
, location-header
) su readyState
2 o 3, ma non sei sicuro.
getAllResponseHeaders()
è uguale.