Ho fatto un sacco di ricerca in questo corso degli ultimi due mesi - prima di entrare nei dettagli, la mia applicazione web sta usando GWT 2.x in esecuzione su Tomcat 7, con una Davanti a Apache httpd 2.2.xe mod_jk 1.2.x.
Con la versione 1.2.26 di mod_jk, occasionalmente vedevo l'errore 'encodedRequest non può essere vuoto' nei registri. Come la domanda dice, questo accadrà solo in IE, per me solo IE8/9. Il problema è che il mio sistema operativo server è Linux, quindi non c'è modo che l'autenticazione NTLM possa essere il problema. Nelle versioni più recenti di mod_jk (1.2.37 al momento della stesura di questo documento), invece, dovrei ottenere un timeout del socket e leggere l'errore nei log di Tomcat.
Questo errore verrebbe registrato durante il polling della mia applicazione Web sul server ogni pochi secondi al fine di ottenere lo stato di un'operazione di lunga durata che era stata avviata in un thread separato. Il polling si sarebbe verificato ogni cinque secondi, ma occasionalmente si sarebbe bloccato durante questa richiesta di stato.
Dopo molti comandi di tcpdump, ho scoperto che la richiesta sospesa sarebbe arrivata su una connessione TCP che veniva ripristinata da Apache; un FIN/ACK veniva inviato al browser, l'intestazione della richiesta POST e il corpo venivano ricevuti dal server e il server continuava a ripristinare la connessione. Quindi, stranamente, solo l'intestazione sarebbe tornata sul server dal browser. Dopo la ricerca di un po ', ho trovato questo:
Why does Internet Explorer not send HTTP post body on Ajax call after failure?
A quanto pare, IE inviare solo le intestazioni durante il re-invio della richiesta POST.In vero stile Microsoft, questo problema è stato conosciuto per un po ', è stato emesso un aggiornamento rapido e installato, ma NON ABILITATO sul computer client. Se non si desidera forzare tutti gli utenti a modificare il registro, è necessario disabilitare HTTP Keep-Alive sul server o aumentare il timeout Keep-alive a> 60 secondi. Per il mio server httpd di apache, sto impostando KeepAliveTimeout su 65 e MaxKeepAliveRequests su 0 in modo che il server non avvii le reimpostazioni di connessione al browser.
fonte
2013-08-12 14:32:29
Ciao qualsiasi aggiornamento su questo problema per favore, sto ricevendo questo errore su IE6 stesso – usman