Jesteśmy w stanie wiarygodnie odtworzyć następujący scenariusz:
- Utwórz małą stronę HTML, która wysyła żądania AJAX do serwera (przy użyciu HTTP POST)
- Odłącz się od sieci i połącz ponownie
- Monitoruj pakiety generowane przez IE po awarii
Po nieudanym połączeniu sieciowym IE wysyła następne żądanie AJAX, ale wysyła tylko plik nagłówek HTTP (nie treść) podczas wykonywania postu HTTP. Powoduje to różnego rodzaju problemy na serwerze, ponieważ jest to tylko częściowe żądanie. Wygoogluj ten problem z Bing, a znajdziesz wiele osób narzekających na „losowe błędy serwera” przy użyciu AJAX lub niewyjaśnionych awarii AJAX.
Wiemy, że IE (w przeciwieństwie do większości innych przeglądarek) zawsze wysyła HTTP POST jako DWA pakiety TCP / IP. Nagłówek i treść są wysyłane osobno. W przypadku bezpośrednio po awarii, IE wysyła tylko nagłówek . IE nigdy nie wysyła ładunku, a serwer ostatecznie odpowiada limitem czasu.
Więc moje pytanie brzmi - dlaczego tak się zachowuje? Wydaje się to błędne w oparciu o specyfikację HTTP, a inne przeglądarki nie zachowują się w ten sposób. Czy to po prostu błąd? Z pewnością powoduje to spustoszenie w każdej poważnej aplikacji internetowej opartej na technologii AJAX.
Informacje referencyjne:
Istnieje podobny problem, wywołany przez limity czasu podtrzymania aktywności HTTP, które są krótsze niż 1 minuta i jest udokumentowany tutaj: