Aşağıdaki senaryoyu güvenilir bir şekilde yeniden oluşturabiliyoruz:
- Bir sunucuya AJAX istekleri gönderen küçük bir HTML sayfası oluşturun (HTTP POST kullanarak)
- Ağ bağlantısını kesin ve yeniden bağlanın
- Hatadan sonra IE'nin oluşturduğu paketleri izleyin
Başarısız bir ağ bağlantısından sonra, IE sonraki AJAX isteğini yapar, ancak HTTP gönderirken yalnızca HTTP başlığını (gövdeyi değil) gönderir. Bu, yalnızca kısmi bir istek olduğu için sunucuda her türlü soruna neden olur. Google bu sorunu Bing ile yaptığınızda, AJAX kullanan veya açıklanamayan AJAX hatalarını kullanan "rastgele sunucu hatalarından" şikayet eden birçok kişi bulacaksınız.
IE'nin (diğer tarayıcıların çoğunun aksine) her zaman İKİ TCP / IP paketi olarak bir HTTP POST'u gönderdiğini biliyoruz. Başlık ve gövde ayrı olarak gönderilir. Bir hatanın hemen ardından oluşan durumda, IE yalnızca başlığı gönderir . IE hiçbir zaman yükü göndermez ve sunucu sonunda bir Zaman Aşımı ile yanıt verir.
Öyleyse sorum şu - neden bu şekilde davranıyor? HTTP spesifikasyonuna göre yanlış görünüyor ve diğer tarayıcılar bu şekilde davranmıyor. Bu sadece bir hata mı? Elbette bu, herhangi bir ciddi AJAX tabanlı Web uygulamasında hasara neden olur.
Referans bilgisi:
1 dakikadan kısa olan ve burada belgelenen HTTP canlı tutma zaman aşımları tarafından tetiklenen benzer bir sorun var: