Réponses:
Que se passe-t-il si le navigateur reçoit une réponse de redirection à une demande ajax?
Si le serveur envoie une redirection (c'est-à-dire une réponse 302 plus un en-tête Location:), la redirection est automatiquement suivie par le navigateur. La réponse à la deuxième requête (en supposant qu'il ne s'agisse pas non plus d'une autre redirection) est ce qui est exposé à votre programme.
En fait, vous ne pouvez pas détecter si une réponse 302 s'est produite. Si la redirection 302 mène à un 200, alors votre programme agit de la même manière que si la demande d'origine menait directement à un 200.
Cela a été à la fois mon expérience et le comportement mentionné dans la spécification .
Mise à jour 2016: le temps est passé et la bonne nouvelle est que la nouvelle API fetch () est conçue pour offrir un contrôle plus fin sur la gestion des redirections , avec un comportement par défaut similaire à XHR. Cela dit, cela ne fonctionne que là où fetch () est implémenté de manière native . Les versions Polyfill de fetch () - qui sont basées sur XHR - continuent à avoir les limitations de XHR . Heureusement, la prise en charge des navigateurs natifs semble bien se terminer.
Le ajax-request
suivra cette redirection afaik. Le contenu réel ( .responseText
, .responseXML
) sera le contenu de la page vers laquelle vous êtes redirigé.
Vous pourrez peut-être intercepter la redirection ( status-code
, location-header
) sur readyState
2 ou 3, mais vous n'en êtes pas sûr.
getAllResponseHeaders()
est égale.