HTTP स्थिति कोड 0 - त्रुटि डोमेन = NSURLErrorDomain?


94

मैं एक iOS प्रोजेक्ट पर काम कर रहा हूं।

इस एप्लिकेशन में, मैं सर्वर से चित्र डाउनलोड कर रहा हूं।

संकट:

छवियों को डाउनलोड करते समय मुझे अनुरोध टाइमआउट मिल रहा है । प्रलेखन के अनुसार HTTP स्टेटस कोड ऑफ रिक्वेस्ट टाइमआउट है 408

लेकिन मेरे आवेदन में, मुझे 0निम्नलिखित त्रुटि के साथ HTTP स्थिति कोड मिल रहा है

त्रुटि डोमेन = NSURLErrorDomain कोड = -1001 "अनुरोध का समय समाप्त हो गया।" UserInfo = 0xb9af710 {NSErrorFailingURLStringKey = http://xxxx.com/resources/p/PNG/1383906967_5621_63.jpg , NSErrorFailingURLKey = http://xxxx.com/resources/p/PNG/1383906967_5621_63.jpg , NSLocalizedDescription = अनुरोध का समय समाप्त , NSUnderlyingError = 0x13846870 "अनुरोध का समय समाप्त हो गया।"}

इंटरनेट पर एक खोज के दौरान, मुझे HTTP स्थिति कोड 0 के बारे में कोई जानकारी नहीं मिली।

क्या कोई मुझे यह समझा सकता है?


1
भी के कारण हो सकता मिश्रित सामग्री developer.mozilla.org/en-US/docs/Web/Security/Mixed_content
devasghar

जवाबों:


96

कोई HTTP स्थिति कोड नहीं है। 0. जो आप देख रहे हैं वह एपीआई / लाइब्रेरी द्वारा दिया गया 0 है जिसे आप उपयोग कर रहे हैं। उसके लिए आपको डॉक्यूमेंट चेक करना होगा।


7
IE10 में एक अजीब बग है, जब स्टेटस कोड 401 या 403 प्राप्त होता है, तो इसे स्टेटस कोड 0. के रूप में व्याख्या करता है। मेरे सिर में, स्टेटस कोड 0 एक त्रुटि है क्योंकि स्पष्ट रूप से कुछ गलत है।
गौई

5
गेट रास्ता टाइमआउट आपके http त्रुटि कॉल
Prashobh

उत्तर गलत है। स्थिति कोड 0 मौजूद है जब ब्राउज़र सर्वर से कनेक्ट नहीं हो सकता है। जब आपको 504 जैसे विभिन्न त्रुटियां मिलती हैं तो यह रिवर्स प्रॉक्सी सेटिंग्स के कारण होता है।
निकॉन

उत्तर सही है। कोई HTTP स्थिति कोड नहीं है। 0. आप इसे एपीआई से रिटर्न मान के रूप में देख सकते हैं, लेकिन यह HTTP प्रतिक्रिया संदेश के अंदर नहीं होगा।
जूलियन रेसचेक

74

किसी NSHTTPURLResponseवस्तु में 0 का स्थिति कोड आमतौर पर इसका मतलब है कि कोई प्रतिक्रिया नहीं थी, और विभिन्न कारणों से हो सकती है। सर्वर कभी भी 0 की स्थिति नहीं लौटाएगा क्योंकि यह एक मान्य HTTP स्थिति कोड नहीं है।

आपके मामले में, आप 0 का स्थिति कोड प्राप्त करने के लिए दिखाई दे रहे हैं, क्योंकि अनुरोध का समय समाप्त हो रहा है और 0 संपत्ति के लिए डिफ़ॉल्ट मान है। समयबाह्य ही विभिन्न कारणों से हो सकता है, जैसे कि सर्वर समय पर प्रतिक्रिया नहीं कर रहा है, फ़ायरवॉल द्वारा अवरुद्ध किया जा रहा है, या आपका संपूर्ण नेटवर्क कनेक्शन डाउन हो रहा है। आमतौर पर उत्तरार्द्ध के मामले में हालांकि फोन यह जानने के लिए पर्याप्त स्मार्ट है कि इसमें नेटवर्क कनेक्शन नहीं है और यह तुरंत विफल हो जाएगा। हालाँकि, यह अभी भी 0 की स्पष्ट स्थिति कोड के साथ विफल हो जाएगा।

ध्यान दें कि उन मामलों में जहां स्थिति कोड 0 है, वास्तविक त्रुटि लौटे NSErrorऑब्जेक्ट में कैप्चर की गई है , न कि NSHTTPURLResponse

408मेरे अनुभव में HTTP स्थिति बहुत असामान्य है। मैंने कभी खुद का सामना नहीं किया। लेकिन यह स्पष्ट रूप से उन मामलों में उपयोग किया जाता है जहां क्लाइंट को सर्वर के लिए एक सक्रिय सॉकेट कनेक्शन बनाए रखने की आवश्यकता होती है, और सर्वर क्लाइंट पर खुले सॉकेट पर अधिक डेटा भेजने के लिए इंतजार कर रहा है, लेकिन यह किसी निश्चित समय में नहीं होता है और सर्वर एक 408स्थिति कोड के साथ कनेक्शन को समाप्त करता है , अनिवार्य रूप से क्लाइंट को "आपने बहुत लंबा समय लिया" बता रहा है।


1
एकदम सही व्याख्या।
काउचडॉलर




5

अपने सीमित अनुभव से, मैं कहूंगा कि निम्नलिखित दो परिदृश्य प्रतिक्रिया का कारण बन सकते हैं status code: 0, ध्यान रखें; उनकी संख्या अधिक हो सकती है, लेकिन मुझे उन दो का पता है:

  • आपका कनेक्शन शायद धीरे-धीरे जवाब दे रहा है।
  • या शायद बैक-एंड सर्वर उपलब्ध नहीं है।

बात यह है, status: 0थोड़ा सामान्य है, और उनके उपयोग के मामले अधिक हो सकते हैं जो एक खाली प्रतिक्रिया शरीर को ट्रिगर करते हैं।


यह एक HTTP स्थिति है, HTTP स्थिति नहीं। यदि कोई HTTP प्रतिक्रिया नहीं थी, तो इसमें कोई HTTP स्थिति कोड नहीं था।
Lorne

स्टेटस कोड 0 का मतलब यह नहीं है कि HTTP रिस्पांस कोड है, लेकिन यह समस्या हो सकती है यदि आपका सर्वर उपलब्ध नहीं है।
रवि

5

स्थिति कोड '0' तीन कारणों से हो सकता है
1) क्लाइंट सर्वर से कनेक्ट नहीं हो सकता है
2) क्लाइंट को टाइमआउट अवधि 3 के भीतर प्रतिक्रिया प्राप्त नहीं हो सकती है ) क्लाइंट द्वारा
अनुरोध "रोका (निरस्त)" किया गया था।

लेकिन ये तीन कारण मानकीकृत नहीं हैं


क्या आपके पास उस पर कोई स्रोत है?
rgoliveira

कोई भी स्रोत कोड पहले दो बिंदुओं का परीक्षण करने के लिए लागू है, आपको बस एक अजाक्स आधारित अनुरोध की आवश्यकता है। लेकिन 3 एक उपयोगकर्ता के अनुरोध को रद्द करने पर हो रहा है, यह jquery में गर्भपात समारोह द्वारा किया जा सकता है।
हरिप्रसाद यादव

4

HTTP प्रतिक्रिया 0 मानक HTTP प्रतिक्रिया नहीं है। लेकिन यह इंगित करता है कि क्लाइंट सर्वर से कनेक्ट नहीं हो सका और इसलिए समय समाप्त हो गया।


2

हमें त्रुटि मिली:

GET http: //localhost/pathToWebSite/somePage.aspx ने http.status उठाया: 0 त्रुटि

उस कॉल को विंडोज़ कार्य से किया जाता है जो VBS फ़ाइल को कॉल करता है, इसलिए समस्या का निवारण करने के लिए, ब्राउज़र को url को इंगित करता है और हमें एक गोपनीयता त्रुटि मिलती है:

आपका कनेक्शन निजी नहीं है

हमलावर स्थानीय जानकारी (उदाहरण के लिए, पासवर्ड, संदेश या क्रेडिट कार्ड) से आपकी जानकारी चुराने की कोशिश कर रहे होंगे। नेट :: ERR_CERT_COMMON_NAME_INVALID

Google को संभावित सुरक्षा घटनाओं का विवरण स्वचालित रूप से दें। गोपनीयता नीति सुरक्षा में वापस यह सर्वर यह साबित नहीं कर सका कि यह लोकलहोस्ट है; इसका सुरक्षा प्रमाणपत्र * .ourdomain.com से है। यह गलत कनेक्शन या आपके कनेक्शन को बाधित करने वाले हमलावर के कारण हो सकता है। और अधिक जानें।

इसका कारण यह है कि हमारे पास कनेक्शन का उपयोग करने के लिए कनेक्शन के लिए बाध्य करने के लिए IIS URL पुनर्लेखन नियम है। यह नियम http: // localhost को https: // localhost पर डायवर्ट करता है, लेकिन हमारा एसएसएल सर्टिफिकेट एक बाहरी सामना करने वाले डोमेन नाम पर आधारित है न कि लोकलहोस्ट, इस प्रकार जो त्रुटि स्थिति कोड के रूप में रिपोर्ट की जाती है। 0. तो एक गोपनीयता त्रुटि बहुत अस्पष्ट कारण हो सकती है इस स्थिति कोड के लिए 0।

हमारे मामले में समाधान स्थानीयहोस्ट के लिए नियम के अपवाद को जोड़ना और http: //localhost/pathToWebSite/somePage.aspx को http का उपयोग करने की अनुमति देना था । अस्पष्ट है, हां, लेकिन मैं अगले साल इस पर चलूंगा और अब मुझे अपना जवाब एक Google खोज में मिलेगा।


2

कभी-कभी ब्राउज़र त्रुटि वस्तु के साथ http त्रुटि हैंडलर का जवाब देता है, जिसकी स्थिति 0 पर सेट है, भले ही आप नेटवर्क में 404, 401, 500 आदि त्रुटि स्थिति देख सकते हैं।

यदि आपका एप्लिकेशन और API विभिन्न डोमेन पर हैं - तो CORS तंत्र लागू होता है। प्रत्येक API अनुरोध के लिए CORS के अनुसार ब्राउज़र दो अनुरोध भेजता है:

  1. यदि एपीआई वास्तविक / मूल अनुरोध की अनुमति देता है तो समझने के लिए विकल्प का अनुरोध करें।
  2. जब API अनुमति देता है (OPTIOS अनुरोध स्थिति 204 और सही एक्सेस-कंट्रोल-अनुमति-मूल हेडर के साथ प्रतिक्रिया करता है) - ब्राउज़र अगला "वास्तविक / मूल अनुरोध" भेजता है।

अनुप्रयोग में हम "वास्तविक / मूल अनुरोध" के लिए त्रुटि प्रतिक्रिया को संभाल रहे हैं, और यदि "पूर्व-विकल्प विकल्प अनुरोध" विफल हुआ - ब्राउज़र http त्रुटि हैंडलर के लिए सही HttpError ऑब्जेक्ट नहीं देता है। इसलिए http प्रतिक्रिया की सही स्थिति प्राप्त करने के लिए - सफलता पूर्वनिर्धारित विकल्प प्राप्त करना सुनिश्चित करें प्रतिक्रिया का अनुरोध करें।




-1

गेट वे टाइमआउट पर, आपकी त्रुटि कॉल बैक पर स्थिति शून्य होगी।

.error( function( data,status,headers,config){
    console.log(status) 
 }

HTTP स्थिति कोड

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.