SORU
25 Ocak 2011, Salı


Neden Internet Explorer hatasından sonra Ajax çağrısı HTTP post vücut göndermez?

Güvenilir bir şekilde aşağıdaki senaryoyu tekrar yaratabiliriz

  1. Bir sunucu (HTTP POST kullanarak) AJAX isteği yapan küçük bir HTML sayfası oluşturun
  2. Ağ bağlantısını kesin ve yeniden bağlayın
  3. YANİ başarısızlık sonrası oluşturduğu paketleri izlemek

Başarısız bir ağ bağlantısı sonra, YANİ bir sonraki AJAX isteği yapar ama tek gönderirHTTP başlık(vücut) HTTP post yaparken. Bu sadece kısmi bir istek gibi sunucu sorunları her türlü neden olur. Bing ile bu sorunu Google ve insanlar "rastgele sunucu hataları" veya açıklanamayan AJAX hataları AJAX kullanarak. şikayet bulacaksınız

YANİ (en diğer tarayıcıların aksine) her zaman İKİ TCP/IP paketleri olarak bir HTTP POST gönderir. Başlık ve gövde ayrı ayrı gönderilir. Doğrudan bir hatadan sonra, bu durumdaYANİ sadece başlık gönderir.

Bana neden bu şekilde davranıyor? Spec ve diğer tarayıcılar bu şekilde davranmıyor HTTP dayalı yanlış gibi görünüyor. Sadece bir hata mı? Elbette bu Web tabanlı bir uygulama herhangi bir ciddi AJAX tahribat oluşturur.

Bilgi ve başvuru:

Benzer bir sorun, 1 dakikadan daha kısa sürer ve burada belgelenen canlı tutma HTTP zaman aşımı tarafından tetiklenir

http://us.generation-nt.com/xmlhttprequest-post-sometimes-fails-when-server-using-keep-aliv-help-188813541.html

http://support.microsoft.com/default.aspx?kbid=831167

Burada önce ve sonra başarısızlık paket yakalar

Dikkat edin HTTP Üstbilgi ve Yükü nasıl gönderilir http://img827.imageshack.us/i/beforee.png/

Bir hatadan sonra, Başlık gönderilir nasıl dikkat edin. YANİaslayükü gönderir ve sunucu sonunda bir zaman Aşımı ile yanıt verir. http://img203.imageshack.us/i/retryt.png/

CEVAP
31 Ocak 2011, PAZARTESİ


Bu soruya net bir cevap vermiyor, yerine ampirik veri sağlamak ve bazı yollar geçici bir çözüm sunacağım. Belki bazı MS içeriden bir gün bu biraz ışık tutacak

  1. Eğer HTTP-Hayatta Tutmakdevre dışısunucuda, bu sorun uzağa gider. Diğer bir deyişle, HTTP 1.1 sunucusu Yanıt Connection: Close bir çizgi ile her Ajax isteği için yanıt verir. Bu IE mutlu ediyor ama her Ajax isteği yeni bir bağlantı açmak için neden olur. Bu önemli bir performans etkisi, özellikle yüksek gecikme ağlarda.

  2. Sorunu kolayca eğer Ajax istekleri peş peşe yapıldığında tetiklenir. Örneğin 100 MS civarında ve ağ durum değişiklikleri her Ajax isteklerini yapmak, hata yeniden oluşturmak için kolay. Çoğu uygulama muhtemelen böyle isteklerde olmasa da, bu soruna yol açabilecek sunucu çağrıları birbirimize sonra olmaya bir çift olabilir. Daha az konuşkan tutar YANİ mutlu.

  3. Hatta NTLM kimlik doğrulaması olmadan olmuyor.

  4. HTTP sunucusu varsayılan daha kısadır canlı tutma üzerinde Windows 60 saniye varsayılan) zaman aşımı ne zaman olur. Ayrıntılar söz konusu bağlantı sağladı.

  5. Chrome veya Firefox ile olmaz. FF bir paket ki bu sorunu tamamen önlemek gibi görünüyor gönderir.

  6. IE 6, 7, 8 olur. IE 9 beta ile yeniden.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Anthony Cumia

    Anthony Cumi

    5 EYLÜL 2006
  • Commander Chalkboard

    Commander Ch

    20 Ocak 2014
  • RogerBuckChrist

    RogerBuckChr

    9 Temmuz 2011