Somos capazes de recriar com segurança o seguinte cenário:
- Crie uma pequena página HTML que faça solicitações AJAX a um servidor (usando HTTP POST)
- Desconecte-se da rede e reconecte-se
- Monitore os pacotes que o IE gera após a falha
Após uma falha na conexão de rede, o IE faz a próxima solicitação AJAX, mas envia apenas o cabeçalho HTTP (não o corpo) ao fazer a postagem HTTP. Isso causa todos os tipos de problemas no servidor, pois é apenas uma solicitação parcial. Pesquise no Google esse problema com o Bing e você encontrará muitas pessoas reclamando de "erros aleatórios do servidor" usando AJAX ou falhas inexplicáveis de AJAX.
Sabemos que o IE (ao contrário da maioria dos outros navegadores) sempre envia um HTTP POST como DOIS pacotes TCP / IP. O cabeçalho e o corpo são enviados separadamente. No caso diretamente após uma falha, o IE apenas envia o cabeçalho . O IE nunca envia a carga útil e o servidor eventualmente responde com um tempo limite.
Portanto, minha pergunta é - por que isso se comporta dessa maneira? Parece errado com base na especificação HTTP e outros navegadores não se comportam dessa maneira. É simplesmente um bug? Certamente isso cria confusão em qualquer aplicativo da Web baseado em AJAX sério.
Informação de referência:
Há um problema semelhante, acionado por tempos limites de HTTP keep-alive menores que 1 minuto e está documentado aqui: