Podemos recrear de manera confiable el siguiente escenario:
- Cree una pequeña página HTML que realice solicitudes AJAX a un servidor (usando HTTP POST)
- Desconectarse de la red y volver a conectarse
- Monitorear los paquetes que genera IE después de la falla
Después de una conexión de red fallida, IE realiza la siguiente solicitud AJAX pero solo envía el encabezado HTTP (no el cuerpo) cuando realiza la publicación HTTP. Esto causa todo tipo de problemas en el servidor, ya que es solo una solicitud parcial. Busque en Google este problema con Bing y encontrará muchas personas que se quejan de "errores aleatorios del servidor" utilizando AJAX o fallas inexplicables de AJAX.
Sabemos que IE (a diferencia de la mayoría de los otros navegadores) siempre envía un HTTP POST como DOS paquetes TCP / IP. El encabezado y el cuerpo se envían por separado. En el caso directamente después de una falla, IE solo envía el encabezado . IE nunca envía la carga útil y el servidor finalmente responde con un tiempo de espera.
Entonces mi pregunta es: ¿por qué se comporta de esta manera? Parece incorrecto según la especificación HTTP y otros navegadores no se comportan de esta manera. ¿Es simplemente un error? Seguramente esto crea estragos en cualquier aplicación web seria basada en AJAX.
Informacion de referencia:
Existe un problema similar, desencadenado por tiempos de espera de HTTP Keep-Alive que son inferiores a 1 minuto y se documenta aquí: