2013-08-24 20 views
7

Sono inesperto in javascript e sviluppo web in generale. Il progetto a cui sto lavorando fa parte di un programma generale di formazione aziendale. Siamo stati incaricati di utilizzare Google Chrome come browser di test principale.Javascript XMLHttpRequest "NetworkError"

In sostanza, sto scrivendo un'applicazione che verrà eseguita su client esterni alla intranet aziendale. Le connessioni passeranno attraverso il nostro single sign on server ai servizi interni. Il servizio Single Sign-On è in gran parte trasparente per l'applicazione lato server: intercetta le richieste ai servizi interni e richiede le credenziali, se necessario. Da quello che posso dire, cambia il cookie di sessione durante ogni richiesta inviata.

Ho stabilito connessioni ai servizi utilizzando le connessioni HTTP GET e POST. Tuttavia, esiste un servizio che richiede una richiesta PUT HTTP. Questo è dove il problema è in arrivo

Quando lo script viene eseguito, il Chrome javascript console dà il seguente errore:.

Uncaught NetworkError: A network error occurred. 

L'errore è così vago. Quando guardo la scheda Rete nella scheda dello sviluppatore di Chrome, mostra la richiesta, ma non ha dati di risposta.

Per curiosità, ho fatto clic con il pulsante destro del mouse sulla richiesta e l'ho copiata come richiesta CURL. Ho aggiunto il cookie di sessione alla richiesta tramite l'opzione -b. cURL restituisce un HTTP 302, con un riferimento a uno script di cookie make sul server. Essendo una richiesta PUT, nessun reindirizzamento fa fallire la richiesta? Ma non sono sicuro questo è ciò che sta accadendo in Chrome/js.

C'è un modo per ottenere ulteriori informazioni sull'errore?

Non sono sicuro al 100% nel team che ha sviluppato i servizi interni da utilizzare, quindi l'utilizzo di una richiesta PUT potrebbe essere effettivamente impossibile ... i servizi sono ancora in fase di sviluppo.

Per essere chiari, il problema generale è che ho bisogno di questa richiesta PUT per passare attraverso la nostra applicazione SSO, se è possibile.

risposta

10

Ho incontrato lo stesso problema. Sembra che si verifichi solo nelle risposte di reindirizzamento. Se si imposta il flag asincrono su false e si utilizza una funzione di callback, l'errore scompare. Per esempio:

xmlhttp.open("GET","http://google.com", false); 

allora avrete bisogno di una funzione come questa per ascoltare la risposta:

xmlhttp.onreadystatechange=function() { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) { 
    // do stuff here 
    } 
}