De retour de redirection tant que réponse à la demande XHR
Ce qui se passe si le navigateur reçoit une réponse de redirection à une requête ajax?
- connexes: stackoverflow.com/q/8905545/248058
Vous devez vous connecter pour publier un commentaire.
Ce qui se passe si le navigateur reçoit une réponse de redirection à une requête ajax?
Vous devez vous connecter pour publier un commentaire.
Ce qui se passe si le navigateur reçoit une réponse de redirection à une requête ajax?
Si le serveur envoie une redirection (aka une réponse 302, plus un en-tête location:) la redirection est automatiquement suivie par le navigateur. La réponse à la deuxième demande (en supposant qu'il n'est pas également une autre redirection) est ce qui est exposée à votre programme.
En fait, vous n'avez pas la capacité de détecter si une réponse 302 a eu lieu. Si la redirection 302 conduit à un 200, puis votre programme agit de la même façon que si la demande initiale a conduit directement à de 200.
Cela a été à la fois mon expérience et de la comportement appelé dans le spec.
2016 mise à Jour: le Temps a passé, et la bonne nouvelle, c'est que la nouvelle fetch() de l'API est spécifié pour offrir un contrôle plus précis de la façon dont les redirections sont manipulés, avec par défaut un comportement similaire à XHR. Cela dit, il ne fonctionne que lorsqu'fetch() est implémentée nativement. Polyfill versions de fetch(), sur la base XHR—continuer à avoir XHR limites. Heureusement, native prise en charge du navigateur semble être arrondi très bien.
window.location.pathname.split('/').length
doit être de la même longueur que l'analysé et préparé xhttp.responseURL. Donc, si ce n'est pas de la même longueur, c'est probablement une redirection dans mon cas. Mais la pensée à ce sujet: si vous connaissez l'URL et attendons votre réponse à partir de la même URL, alors vous pouvez simplement comparer votre URL avec le xhttp.responseURL.La
ajax-request
suivra une redirection autant que je sache. Le contenu réel (.responseText
,.responseXML
) sera le contenu de la page, vous êtes redirigé vers.Vous pourriez être en mesure d'intercepter la redirection (
status-code
,location-header
) surreadyState
2 ou 3, mais pas sûr à ce sujet.getAllResponseHeaders()
est égal.