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
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:
Eğer devlet GÖNDERİLMEMİŞ veya açılırsa, 0 döndürür.
Eğer hata bayrağı ayarlanırsa, 0 döndürür.
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ğisend()
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 milisaniyetimeout
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.
'uygun HTTP durum kodu, bir DİNLE...
HTTP durum doğru oturum açma sayfası i...
Nasıl MVC 3 denetleyici ASP.NET 200 HT...
Ne HTTP durum kodu tepki eğer bu isteğ...
HTTP durum kodu 200 (önbellek) vs duru...