XmlHttpRequest stato 0 invece di 401 in IE 10

Mi hanno colpito un muro con questo problema. Credo che sia un qualche tipo di bug di IE, ma voglio essere sicuro.

Quindi la domanda è. Perché IE10 XmlHttpRequest.lo stato restituisce 0 invece di 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();

Vedere plunker qui: http://plnkr.co/edit/E2lCflPDHHaQi7t79IeM?p=preview

Questo codice genera un CORS richiesta che restituisce sempre 401. Firefox e chrome correttamente ritorno 401 in stato di attributo, ma IE10 restituisce 0. Questo problema si rompe di autenticazione, gestione dei metodi che uso per il mio progetto.

Grazie

Edit:

Ho modificato il plunker con onload e onerror gestori di eventi (punta da monsur commento), ma il risultato è sempre lo stesso.

Ho anche fatto in modo di IE10 non ha compatibilità con la modalità selezionata. (suggerimento da cernunnos commento)

  • CORS è un modo per aggirare il SOP. Questo non è un duplicato.
  • IE10 suposedly supporta CORS, e la vostra risposta del server sembra avere gli header necessari, sei sicuro di non esecuzione di IE10 la modalità di compatibilità? forse IE9/8/7 Browser Mode / Modalità Documento ?
  • Cercare di collegare più recente onload e onerror metodi e vedere di cosa si tratta per lo stato in ogni.
InformationsquelleAutor Gregy | 2013-04-18



2 Replies
  1. 20

    Questo sembra essere un bug in 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 è il trattamento di stato HTTP 401 come un errore di rete. La console mostra:

    SCRIPT7002: XMLHttpRequest: Network Error 0x80070005, Access is denied

    Secondo XMLHttpRequest Livello 2 specifica l’attributo di stato dovrebbe essere pari a zero se il flag di errore (per esempio a causa di un errore di rete). Tuttavia la specifica indica inoltre (http://www.w3.org/TR/XMLHttpRequest2/#infrastructure-for-the-send-method) che un errore di rete

    non include HTTP risposte che indicano un certo tipo di errore, ad
    come codice di stato HTTP 410.

    Penso che sia chiaro che il codice di stato HTTP 401 pertanto non deve essere considerato come un errore di rete (in quanto non è in Chrome, Firefox e Safari) e che questo è un bug di IE10.

    • C’è un modo per rilevare questo errore si sta generando, invece?
    • Inoltre, ho riscontrato lo stesso problema, ma ottenere un ‘404’ con ‘undefined’ indietro — mi sta facendo impazzire!
    • Questo bug sembra di essere lì in IE11.
    • C’è qualche soluzione per questo?
  2. 3

    Ho appena imbattuto in questo problema di oggi. Dopo aver provato un paio di soluzioni alternative, e alcune Googleing, sono finito qui.
    Si è rivelato essere solo un impostazioni del livello di sicurezza.
    Qualunque sia la zona di sicurezza il tuo sito web è in (Opzioni Internet > Sicurezza), assicurarsi di ATTIVARE le seguenti impostazioni nella tua zona: Varie > Accesso all’origine dati a livello di dominio.

    • Grazie, questo mi ha aiutato. Questa è anche la soluzione citati nelle risposte accettate link per L’bug report.

Lascia un commento