हम निम्नलिखित परिदृश्य को फिर से बनाने में सक्षम हैं:
- एक छोटा HTML पृष्ठ बनाएं जो सर्वर से AJAX अनुरोध करता है (HTTP POST का उपयोग करके)
- नेटवर्क से डिस्कनेक्ट करें और फिर से कनेक्ट करें
- पैकेट पैकेट की निगरानी करें जो IE विफलता के बाद उत्पन्न करता है
असफल नेटवर्क कनेक्शन के बाद, IE अगला AJAX अनुरोध करता है लेकिन केवल HTTP पोस्ट करते समय HTTP हेडर (बॉडी नहीं) भेजता है । यह सर्वर पर सभी प्रकार की समस्याओं का कारण बनता है क्योंकि यह केवल आंशिक अनुरोध है। Google ने बिंग के साथ इस मुद्दे को उठाया और आपको AJAX या अस्पष्टीकृत AJAX विफलताओं का उपयोग करके "यादृच्छिक सर्वर त्रुटियों" के बारे में शिकायत करने वाले बहुत से लोग मिलेंगे।
हम जानते हैं कि IE (अधिकांश अन्य ब्राउज़रों के विपरीत) हमेशा HTTP टीसीएस को दो टीसीपी / आईपी पैकेट के रूप में भेजता है। हेडर और बॉडी को अलग-अलग भेजा जाता है। विफलता के बाद सीधे मामले में, IE केवल हेडर भेजता है । IE कभी भी पेलोड नहीं भेजता है और सर्वर अंततः टाइमआउट के साथ प्रतिक्रिया करता है।
तो मेरा सवाल है - यह इस तरह से व्यवहार क्यों करता है? यह HTTP कल्पना और अन्य ब्राउज़रों के आधार पर गलत लगता है इस तरह से व्यवहार नहीं करते हैं। क्या यह केवल एक बग है? निश्चित रूप से यह किसी भी गंभीर AJAX आधारित वेब एप्लिकेशन में कहर पैदा करता है।
संदर्भ सूचना:
इसी तरह की समस्या है, जो HTTP Keep-live टाइमआउट द्वारा ट्रिगर की गई है जो 1 मिनट से कम है और यहां प्रलेखित है: