XmlHttpRequest statut 0 au lieu de 401 dans IE 10
J'ai frappé un mur avec ce problème. Je suppose que c'est une sorte de IE bug, mais je veux être sûr.
La question est donc. Pourquoi ne IE10 XmlHttpRequest.statut renvoie 0 au lieu de 401?
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4)
{
document.getElementById("rescode").innerHTML="Request completed with status: "+xmlhttp.status;
}
}
xmlhttp.open("GET","http://hosting.gregy.cz/cors/",true);
xmlhttp.send();
Voir plunker ici: http://plnkr.co/edit/E2lCflPDHHaQi7t79IeM?p=preview
Ce code déclenche un SCRO demande qui revient toujours 401. Firefox et chrome renvoyer correctement 401 dans l'attribut de situation mais IE10 retourne 0. Ce problème des sauts de traitement d'authentification des méthodes que j'utilise pour mon projet.
Merci
Edit:
J'ai modifié le plunker avec onload et des gestionnaires d'événement onerror (conseil de monsur du commentaire), mais le résultat est toujours le même.
J'ai aussi fait en sorte d'IE10 n'a pas de mode de compatibilité sélectionné. (astuce de cernunnos commentaire)
source d'informationauteur Gregy | 2013-04-18
Vous devez vous connecter pour publier un commentaire.
Ce qui semble être un bogue dans IE10 (https://connect.microsoft.com/IE/feedback/details/785990/ie-10-on-win8-does-not-assign-the-correct-status-to-xmlhttprequest-when-the-result-is-401).
IE10 est le traitement de l'état HTTP 401 comme une erreur de réseau. La console affiche:
Selon le XMLHttpRequest Niveau 2 de la spécification de l'attribut de situation doit être égal à zéro si l'indicateur d'erreur est définie (par exemple en raison d'une erreur réseau). Toutefois, la spécification précise également (http://www.w3.org/TR/XMLHttpRequest2/#infrastructure-for-the-send-method) qu'une erreur de réseau
Je pense qu'il est clair que l'état HTTP 401 ne doit donc pas être traitée comme une erreur de réseau (comme il n'est pas dans Chrome, Firefox et Safari) et que c'est un bug dans IE10.
Je viens de tomber sur ce problème aujourd'hui. Après avoir essayé quelques solutions de contournement, et certains Googleing, je me suis retrouvé ici.
Il s'est avéré être juste un paramètres de niveau de sécurité.
Quelle que soit la zone de sécurité de votre site internet (Internet Options > Sécurité) assurez-vous d'ACTIVER le paramètre suivant dans votre zone: Divers > l'Accès à des sources de données sur plusieurs domaines.