He hecho un gran trabajo de investigación en este en el último par de meses - antes de entrar en los detalles, mi aplicación web está utilizando GWT 2.x se ejecuta en Tomcat 7, con una Apache httpd 2.2.x y mod_jk 1.2.x setup en el frente.
Con mod_jk versión 1.2.26, de vez en cuando veo el error 'encodedRequest no puede estar vacío' en los registros. Como dice la pregunta, esto solo ocurrirá en IE, para mí solo IE8/9. El problema es que mi sistema operativo de servidor es Linux, por lo que no hay forma de que la autenticación NTLM sea el problema. En las versiones más recientes de mod_jk (1.2.37 al momento de escribir esto), en cambio, obtendría un tiempo de espera del socket y un error de lectura en los registros de Tomcat.
Este error se registraría durante una encuesta de mi aplicación web al servidor cada pocos segundos para obtener el estado de una operación de larga ejecución que se había iniciado en una secuencia separada. El sondeo ocurriría cada cinco segundos, pero de vez en cuando se colgaría mientras realizaba esta solicitud de estado.
Después de una gran cantidad de comandos tcpdump, encontré que la solicitud que colgaba vendría en una conexión TCP que Apache estaba restableciendo; se estaba enviando un FIN/ACK al navegador, el servidor recibiría el encabezado y el cuerpo de la solicitud POST, y el servidor continuaría restableciendo la conexión. Entonces, curiosamente, solo el encabezado volvería al servidor desde el navegador. Después de investigar un poco, me encontré esto:
Why does Internet Explorer not send HTTP post body on Ajax call after failure?
Al parecer, IE sólo enviará los encabezados durante la re-envío de la solicitud POST.De acuerdo con la verdadera moda de Microsoft, este problema ha sido conocido por un tiempo, se emitió e instaló una revisión, pero NO HABILITADO en la máquina cliente. Si no desea obligar a todos sus usuarios a editar su registro, debe deshabilitar HTTP Keep-Alive en su servidor o aumentar el tiempo de espera de Keep-Alive a> 60 segundos. Para mi servidor httpd de apache, configuro KeepAliveTimeout en 65 y MaxKeepAliveRequests en 0 para que el servidor no inicie restablecimientos de conexión en el navegador.
Hola actualizaciones sobre este tema, me sale este error en IE6 – usman