XMLHttpRequest.status != 302
Je viens de découvrir une nouvelle limitation de l’objet XMLHttpRequest utilisé par la méthodologie Ajax.
Celui-ci ne supporte pas les rédirections HTTP envoyées par un serveur web.
Effectivement, un serveur web peut indiquer au client, via l’envoi d’une réponse de type 300 que le document demandé ne se trouve pas à la page indiquée.
L’objet XMLHttpRequest suit automatiquement les redirections sans vous en informer.
De ce fait, il n’est pas possible d’informer le client d’une redirection envoyée par le serveur.
Nous avons experimenté ce comportement avec tous les navigateurs du marché.
Mes recherches sur ce sujet le confirment :
http://www.codecomments.com/archive361-2005-3-412946.html
Il existe une solution, non portable qui conssiste à utiliser l’objet WinHttpRequest
Celui-ci propose de nombreuses méthodes supplémentaires, dont notamment la désactivation du suivi des rédirections automatiques : WinHttpRequestOption
Mais il n’est disponible que sous Microsoft Windows …
Il faut noter, que le suivi automatique des rédirections est une faille de securité, car lorsque les redirections bouclent, le navigateur du client plante.
C’est notamment le cas de Mozilla Firefox, qui est pourtant capable de détecter les boucles de redirection classique.
seules les redirections avec un code 302 sont faites par XHR.
or celles ci ne sont pas vues par l’utilisateur.
si il y a des redirections en boucle c’est de la faute du programmeur et ça arrive pas souvent…
de mon point de vue il ne s’agit absolument pas d’une faille de sécurité…