SORU
29 EYLÜL 2010, ÇARŞAMBA


0 HTTP Durum kodu bir anlamı var mı?

Görünen o yapınca bir XMLHttpRequest bir komut bir Tarayıcı, Tarayıcı ayarlamak için Çevrimdışı Çalış veya bir ağ kablosu çekip, istek tamamlanmadan bir hata ve durum = 0. 0 HTTP durum kodları caiz arasında yer alıyor.

0 durum kodu ne anlama geliyor? Tüm HTTP istemci yardımcı programları için tüm tarayıcılarda, ve aynı şeyi ifade ediyor mu? HTTP spec bir parçası mı yoksa başka bir protokol spec bir parçası mı? HTTP isteği belki de sunucu adresi çözülemedi çünkü yapılmış olabilir demek gibi görünüyor.

Ne hata mesajı uygun kullanıcı göstermek için mi? "İnternete bağlı değilseniz ya da web sitesi sorunla karşılaşıyor ya da adresini yazarak bir hata olabilir"?

Ayarlandığında FireFox davranışı gördüğüm bu eklemem gereken "olarak ayarlandığında", ancak Microsoft Internet Explorer değil". Çevrimdışı Çalış Çevrimdışı Çalış YANİ, kullanıcı bir iletişim online gitmek için seçeneği vererek alır. FireFox hata dönmeden önce kullanıcıya bildirmek değildir.

Bir isteğe yanıt olarak bunu soruyorum "daha iyi bir hata iletisi göster". Internet Explorer ne güzel. Soruna neden olan ve bunu düzeltmek için bu seçeneği verir ne kullanıcı söyler. FireFox ile eşdeğer bir UX vermek için sorunun nedenini anlaması ve kullanıcı bilgilendirmek istiyorum. Ne toplam Durum 0 çıkarabilir miyim? Evrensel bir anlamı var mı, yoksa bana bir şey anlatıyor mu?

CEVAP
19 EKİM 2014, Pazar


Kısa Cevap

değilHTTP yanıt kodu amaXMLHttpRequest (ve böylece jqXHR bir nesnenin aynı zamanda, DV kullanıcılar için) status özniteliği için geçerli bir değer olarak U3 tarafından belgelenmiş.

Kapsar bir band dolusu mümkün olduğu durumlar var gerçek bir HTTP yanıt kodu mevcut rapor, ya da çünkü henüz göndermediniz isteği, açıkça iptal edildi, sayfa boşaltma yaxbirçok olası değerleri için ters gittix.

Uzun Cevap

İlk olarak, yinelemek: 0değilHTTP durum kodu. 0 ve 6 Birleşik Devletleri açıkçası bu bölüm için giriş içermeyen RFC 7231 Section 6.1, onları tam bir listesi var

Durum-kod öğesi üç basamaklı bir tamsayı bir koddur

0 değildir.

Ancak status değeri öznitelik olarak, 0 XMLHttpRequest nesnebelgelenmiş. http://www.w3.org/TR/XMLHttpRequest/#the-status-attribute: belge

4.7.1 durum özniteliği

status öznitelik aşağıdaki adımları çalışması sonucunda iade etmelidir:

  1. Eğer devlet GÖNDERİLMEMİŞ veya açılırsa, 0 döndürür.

  2. Eğer hata bayrağı ayarlanırsa, 0 döndürür.

  3. HTTP durum kodunu döndürür.

Spec daha derin kazmak ve 0 iade için bu koşullar yani sadece bulabiliriz. http://www.w3.org/TR/XMLHttpRequest/#states:

4.5 Birleşik Devletleri

...

UNSENT (sayısal değeri 0)

Nesne inşa edilmiştir.

OPENED (sayısal değeri 1)

open() yöntemi başarıyla çağırıldı. Bu devlet isteği sırasında başlıkları setRequestHeader() kullanılarak ayarlanabilir ve isteği send() yöntemi kullanılarak yapılabilir.

...

hata bayrağıağ hatası bazı türünü gösterir ya da fesih getir. Başlangıçta Geri Al.

Ayrıca ilgili UNSENT OPENED sonraki Olası durumu HEADERS_RECEIVED not:

HEADERS_RECEIVED (sayısal değeri 2)

Tüm yönlendirmeleri (varsa) takip edilmiş ve son yanıt tüm HTTP başlıklarını tercih etti. Nesnenin birden fazla yanıt üyeleri artık kullanılabilir.

Bu tüm koyarak birlikte, kısa cevap 0 basitçe ne olur geri döndü tarafından status öznitelik XMLHttpRequest nesne ne zaman yok gerçek durum kodu dönmek, çünkü her iki:

  • İstek gönderdim henüz gelmedi ya
  • İstek gönderildi ama yanıt başlıklarını henüz alınmış değil ya
  • Birçok olası durumlardan biri, neden the docs, "hata bayrağı" için ayarlanmış. oluştu listeledik

Hataları bu gizemli nedeni ne peki, ama "hata bayrağı set olmak"? -F CTRL 'hata bayrağı' U3 belgelerinde, onu alır . eğer ^em>Geri Alisteği gönderdikten sonra, ve sadece hiç olurayarlayınalgoritması bir parçası olarak "istek". Sonlandır Tüm yerler arıyorbualgoritması çağrılır, olur göreceksiniz:

  • İstek (ya da yeniden açıldı) open() yöntemi ile açılır
  • İstek toplanan çöp (sayfa bırakarak gibi)
  • İsteği abort() yöntemi ile iptal edildi
  • 'İstemek hata olur, aşağıdaki durumlardan biri oluştuğunda hangi olabilir:'

    • Bir ağ hatası meydana gelebilecek oluşur

      • Sonsuz bir yeniden yönlendirme döngüsü var
      • /Var

        Hata DNS, TLS anlaşması hatası veya ağ hatası diğer tür

      • İsteği bir İSTASYONDAN bir istek ve yanıt paylaşılamaz
    • İptal bir hata sadece olabilir, hangi oluşur

      Son kullanıcı isteği iptal eder

      her ne demekse. AJAX istekleri ortaya zaman kullanıcıları gösterir ve onları açıkça iptal etmek için fırsat veren herhangi bir tarayıcı bilmiyorum, bu - en azından bugün - alakasız olduğunu düşünüyorum.

    • Zaman aşımı hatası, yeterince makul olduğu anlamına gelir oluşur

      timeout 0 ve isteği başladığından beri milisaniye timeout tarafından belirtilen süre geçti

XMLHttpRequest gelince, hepsi bu.

Ötesinde XMLHttpRequest, I would spekülasyon HTTP kütüphanelerde diller dışında JavaScript olabilir iyi kullanarak bir 0 durum kodu benzer şekilde, varsayılan değer hiçbir durum kodu oldu alınan bir server.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • MrOctopi

    MrOctopi

    6 Aralık 2010
  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008
  • williamfitzsimmons

    williamfitzs

    14 Mart 2008