Nous sommes en mesure de recréer de manière fiable le scénario suivant:
- Créez une petite page HTML qui envoie des requêtes AJAX à un serveur (en utilisant HTTP POST)
- Déconnectez-vous du réseau et reconnectez-vous
- Surveiller les paquets générés par IE après l'échec
Après un échec de connexion réseau, IE effectue la prochaine requête AJAX mais envoie uniquement l' en-tête HTTP (pas le corps) lors de la publication HTTP. Cela provoque toutes sortes de problèmes sur le serveur car il ne s'agit que d'une requête partielle. Recherchez ce problème avec Bing et vous trouverez de nombreuses personnes se plaignant des "erreurs de serveur aléatoires" utilisant AJAX ou des échecs AJAX inexpliqués.
Nous savons que IE (contrairement à la plupart des autres navigateurs) envoie toujours un HTTP POST sous forme de DEUX paquets TCP / IP. L'en-tête et le corps sont envoyés séparément. Dans le cas directement après une panne, IE envoie uniquement l'en-tête . IE n'envoie jamais la charge utile et le serveur répond finalement avec un Timeout.
Ma question est donc: pourquoi se comporte-t-il de cette façon? Cela semble faux d'après les spécifications HTTP et les autres navigateurs ne se comportent pas de cette façon. Est-ce simplement un bug? Cela crée sûrement des ravages dans toute application Web sérieuse basée sur AJAX.
Informations de référence:
Il existe un problème similaire, déclenché par des délais d'attente HTTP inférieurs à 1 minute et documenté ici: