Kami dapat membuat ulang skenario berikut dengan andal:
- Buat halaman HTML kecil yang membuat permintaan AJAX ke server (menggunakan HTTP POST)
- Putuskan sambungan dari jaringan dan sambungkan kembali
- Pantau paket yang dihasilkan IE setelah kegagalan
Setelah koneksi jaringan gagal, IE membuat permintaan AJAX berikutnya tetapi hanya mengirim header HTTP (bukan isi) saat melakukan posting HTTP. Hal ini menyebabkan segala macam masalah di server karena ini hanya sebagian permintaan. Google masalah ini dengan Bing dan Anda akan menemukan banyak orang mengeluh tentang "kesalahan server acak" menggunakan AJAX atau kegagalan AJAX yang tidak dapat dijelaskan.
Kita tahu bahwa IE (tidak seperti kebanyakan browser lain) selalu mengirimkan HTTP POST sebagai DUA paket TCP / IP. Header dan body dikirim secara terpisah. Dalam kasus langsung setelah kegagalan, IE hanya mengirimkan header . IE tidak pernah mengirim payload dan server akhirnya merespons dengan Timeout.
Jadi pertanyaan saya adalah - mengapa ia berperilaku seperti ini? Tampaknya salah berdasarkan spesifikasi HTTP dan browser lain tidak berperilaku seperti ini. Apakah ini hanya bug? Tentunya ini menciptakan malapetaka dalam aplikasi Web berbasis AJAX yang serius.
Informasi referensi:
Ada masalah serupa, yang dipicu oleh waktu tunggu tetap-hidup HTTP yang kurang dari 1 menit dan didokumentasikan di sini: