Que se passe-t-il si le navigateur reçoit une réponse de redirection à une demande ajax?
Que se passe-t-il si le navigateur reçoit une réponse de redirection à une requête ajax?
Si le serveur envoie une redirection (à savoir une réponse 302 plus un en-tête Location:), la redirection est automatiquement suivie par le navigateur. La réponse à la demande seconde (en supposant qu'il ne s'agisse pas non plus d'une autre redirection) correspond à ce qui est exposé à votre programme.
En fait, vous ne pouvez pas détecter si une réponse 302 a eu lieu. Si la redirection 302 mène à un 200, votre programme agit alors de la même manière que si la demande initiale aboutissait directement à un 200.
Cela a été à la fois mon expérience et le comportement indiqué dans la spécification .
Mise à jour 2016: Le temps a passé et la bonne nouvelle est que la nouvelle (fetch () API) est spécifiée pour offrir contrôle plus fin du traitement des redirections , avec un comportement par défaut similaire à XHR. Cela dit, cela ne fonctionne que là où fetch () est implémenté en natif. Les versions Polyfill de fetch () - qui sont basées sur XHR -- continuent à avoir les limitations de XHR . Heureusement, support du navigateur natif semble bien se terminer.
Le ajax-request
suivra cette redirection autant que je sache. 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.