AJAX HTTP स्थिति कोड 0 क्यों लौटा रहा है?


139

किसी कारण से, AJAX का उपयोग करते समय (मेरे साथ) विकसित अनुप्रयोग) ब्राउज़र बस अपलोड करना बंद कर देता है और स्थिति कोड देता है 0। क्यों होता है ऐसा?

जवाबों:


110

एक और मामला:

0यदि आपने AJAX कॉल भेजा है तो स्थिति कोड प्राप्त करना संभव हो सकता है और AJAX प्रतिक्रिया प्राप्त करने से पहले ब्राउज़र का एक रिफ्रेश ट्रिगर किया गया था । AJAX कॉल रद्द कर दी जाएगी और आपको यह दर्जा मिल जाएगा।


9
इसे इंगित करने के लिए धन्यवाद, इसने मुझे एहसास कराया कि (साथ ही एक ब्राउज़र रिफ्रेश) एक फॉर्म सबमिशन ajax कॉल को रद्द कर सकता है।
मैग्नस स्मिथ

1
बस करो<form onsubmit="return false;">
हेक्टर

1
@ हेयटर के सुझाव ने मेरे लिए काम किया - मेरे फॉर्म का "सबमिट" बटन पृष्ठ को ताज़ा कर रहा था, इस बीच मैंने जावास्क्रिप्ट जमा किया था जब "सबमिट" बटन पर क्लिक करने पर अजाक्स कॉल चलाने की कोशिश की गई थी। परिणाम यह था कि अजाक्स कॉल रद्द कर दिया गया था
निक स्कोजारो

अरे, मैं एक चूकe.preventDefault();
चिंगारी

97

मेरे अनुभव में, आप 0 की स्थिति देखेंगे जब:

  • क्रॉस-साइट स्क्रिप्टिंग करना (जहां पहुंच अस्वीकृत है)
  • एक URL का अनुरोध करना जो पहुंच से बाहर है (टाइपो, डीएनएस मुद्दे आदि)
  • अनुरोध को अन्यथा इंटरसेप्ट किया गया है (अपने विज्ञापन अवरोधक की जांच करें)
  • ऊपर के रूप में, यदि अनुरोध बाधित है (ब्राउज़र पृष्ठ से दूर नेविगेट करता है)

1
जब कनेक्शन से मना किया गया तो मैं इसे प्राप्त कर रहा हूं। उदाहरण के लिए, जब विज़ुअल स्टूडियो के साथ मेरी साइट को डीबग करना, यदि मैंने डिबगिंग सत्र को रोक दिया है, तो कनेक्ट करने की कोशिश करने वाले किसी भी अनुरोध को शुद्ध :: ERR_CONNECTION_REFUSED और स्थिति कोड शून्य हो जाएगा। यह समझ में आता है, क्योंकि आपके पास एक स्थिति कोड नहीं हो सकता है यदि आप उस सर्वर से कनेक्ट नहीं कर सकते हैं जो एक प्रदान करने वाला है।
त्रिवेंको

मैं पुष्टि कर सकता हूं। मुझे अपना वेब सर्वर बंद करने के बाद स्टेटस == 0 मिला है।
9ilsdx 9rvj 0lo

'क्रॉस-साइट स्क्रिप्टिंग' के कारण मेरे पास त्रुटियां हैं; मुझे क्या करना चाहिए?

1
@nasimjahednia लुकिंग CORS ... सर्वर जिसे आप अपने डोमेन से क्रॉस साइट स्क्रिप्टिंग के लिए अनुमति देने के लिए उपयोग करने की कोशिश कर रहे हैं।
लैंगडन

मैं उलझन में हूं। क्या HTTP त्रुटि कोड प्राप्त करने का कोई तरीका नहीं है? यह विभिन्न मामलों का एक बहुत कुछ है यहाँ (415, 404, आदि?)
एडविन इवांस

8

उपयोग करते समय एक ही समस्या <button onclick="">submit</button>। फिर उपयोग करके हल किया<input type="button" onclick="">


1
बिंगो !! कोई भी समझा सकता है कि ऐसा क्यों?
जॉर्ज

3
डिफ़ॉल्ट रूप से HTML बटन प्रकार 'सबमिट' होता है, इसलिए इसे क्लिक करने से फ़ॉर्म डेटा सबमिट करने का प्रयास किया जाएगा। तो यह क्लिक क्रिया को अंजाम देगा, फिर सबमिट करने का प्रयास करें। यदि आप टाइप 'बटन' का उपयोग करते हैं, तो यह अब डिफ़ॉल्ट प्रकार नहीं है और केवल ऑनक्लिक प्रदर्शन करेगा।
क्रिस्टोफ रूसो

7

स्थिति कोड 0 का मतलब है कि अनुरोधित यूआरएल उपलब्ध नहीं है। परिवर्तित करने से // कुछ / कुछ: http करने के लिए https: // कुछ / कुछ मेरे लिए काम किया। IE स्थिति कोड 0 है, जब अन्य ब्राउज़र न "त्रुटि से इनकार" अनुमति से इनकार कर दिया।


इस मामले में, क्रोम वर्तमान में "स्टेल्ड" स्थिति में अनुरोध को तब तक छोड़ देगा जब तक कि वह बाहर न हो जाए। यह या तो उस सर्वर से पिछले अनुरोध में लौटाए गए एक सख्त-परिवहन-सुरक्षा ध्वज के कारण हो सकता है, या यह अनुरोध के साथ भेजे जा रहे कुकी पर सुरक्षित / HttpOnly ध्वज हो सकता है ।
शेन ह्यूजेस

7

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


4

इस लेख ने मेरी मदद की। मैं AJAX के माध्यम से फॉर्म जमा कर रहा था और return false(मेरे ajax अनुरोध के बाद) उपयोग करना भूल गया, जिसके कारण क्लासिक फॉर्म सबमिट हो गया लेकिन अजीब तरह से यह पूरा नहीं हुआ।


डॉन मैं इस तथ्य से नफरत करता हूं कि मैं फिर से इस से पकड़ा गया था! <form onsubmit="return false;">चाल चली।
हेक्टर

3

क्योंकि यह दिखाता है कि जब आप ajax स्टेटस को गूगल करते हैं तो 0 मैं कुछ टिप छोड़ना चाहता था, जिसमें मुझे घंटों का समय लगता था ... मैं ajax का उपयोग PHP सेवा को कॉल करने के लिए कर रहा था, जो कि Codeigniter के लिए Phil के REST_Controller होने के लिए हुआ था (यह सुनिश्चित नहीं है कि क्या यह है इसके साथ कुछ नहीं करना है या नहीं) और स्टेटस 0 प्राप्त करता रहा, 0 को रीडिस्ट्रेट किया और यह मुझे पागल कर रहा था। मैं इसे डिबग कर रहा था और देखा कि जब मैं गूंजूंगा और संदेश से बाहर निकलने के बजाय मैं एक सफलता प्राप्त करूंगा। अंत में मैंने डिबगिंग बंद कर दी और कोशिश की और यह काम कर गया। लगता है कि PHP के साथ xDebug डिबगर किसी तरह प्रतिक्रिया को संशोधित कर रहा था। यदि आपका एक PHP डिबगर का उपयोग करके यह देखने के लिए कि यह मदद करता है, तो इसे बंद करने का प्रयास करें।


3

मुझे एक और मामला मिला जहां jquery आपको स्टेटस कोड 0 देता है - अगर किसी कारण से XMLHttpRequest परिभाषित नहीं होता है, तो आपको यह त्रुटि मिलेगी।

जाहिर है कि यह आम तौर पर वेब पर नहीं होगा, लेकिन एक रात के फ़ायरफ़ॉक्स बिल्ड में एक बग के कारण मुझे ऐड-ऑन में फसल करना पड़ा। :)


1
आपने एक बिंदु बनाया, मुझे jQuery.ajax()एक्सएचआर ऑब्जेक्ट के साथ समस्या थी । अनुरोध AJAX कॉल पर भी नहीं बनाया गया था, अभी भी f.open एक फ़ंक्शन और स्थिति कोड नहीं है। 0. इसके कारण: मैं $.ajaxSettings.xhrऑब्जेक्ट से लौट रहा था $.ajaxSetup({xhr}), new window.XMLHttpRequest();बजाय समस्या को हल किए
klimpond

3

मुझे भी यही समस्या थी, और यह ब्राउज़र द्वारा XSS (क्रॉस साइट स्क्रिप्टिंग) ब्लॉक से संबंधित था। मैं एक सर्वर का उपयोग कर इसे बनाने में कामयाब रहा।

यहां देखें: http://www.daniweb.com/web-development/javascript-dhtml-ajax/threads/282972/why-am-i-getting-xmlhttprequest.status0


2

"एक्सीडेंटल" फॉर्म सबमिशन वास्तव में मुझे जो समस्या थी। मैंने सिर्फ FORM टैग को पूरी तरह से हटा दिया है और यह समस्या को ठीक करने के लिए लगता है। आप सबको धन्यवाद!


2

हमारे पास इसी तरह की समस्या थी - jquery ajax कॉल पर स्टेटस कोड 0 - और इसका निदान करने में हमें पूरा दिन लग गया। चूंकि किसी ने भी इस कारण का उल्लेख नहीं किया था, मैंने सोचा कि मैं साझा करूँगा।

हमारे मामले में समस्या HTTP सर्वर क्रैश की थी। PHP में कुछ बग अपाचे उड़ा रहा था, इसलिए ग्राहक के अंत में यह इस तरह दिखता था:

mirek@toccata:~$ telnet our.server.com 80
Trying 180.153.xxx.xxx...
Connected to our.server.com.
Escape character is '^]'.
GET /test.php HTTP/1.0
Host: our.server.com

Connection closed by foreign host.
mirek@toccata:~$ 

जहाँ परीक्षण। php में दुर्घटनाग्रस्त कोड था। सर्वर से कोई डेटा नहीं लौटाया गया (हेडर भी नहीं) => स्थिति के साथ ajax कॉल निरस्त की गई।


2

मेरे मामले में, यह मेरे django सर्वर के तहत चलने के कारण हुआ, http://127.0.0.1:8000/लेकिन ajax कॉल भेजने के कारण http://localhost:8000/। यद्यपि आप उनसे एक ही पते पर मैप करने की अपेक्षा करेंगे, फिर भी वे यह सुनिश्चित नहीं करते कि आप अपने अनुरोध को लोकलहोस्ट को नहीं भेज रहे हैं।


2

हमारे मामले में, पृष्ठ लिंक को https से http में बदल दिया गया था । भले ही उपयोगकर्ताओं को लॉग इन किया गया था, लेकिन उन्हें AJAX के साथ लोड होने से रोका गया था।


दिलचस्प। मुझे उम्मीद है कि यह मेरा मामला है। चूँकि मेरा iframe https के साथ खुलता है और परिणाम सफलता पर मैं ajax को http पर भेजता हूँ तो मुझे स्थिति 0
sonic

1

मेरे मामले में, url: ''अजाक्स सेटिंग में एक स्थिति कोड 0 में ie8 का परिणाम होगा .. ऐसा लगता है कि बस ऐसी सेटिंग को बर्दाश्त नहीं करता है।


1

मेरे लिए, समस्या होस्टिंग कंपनी (गोडैडी) द्वारा POST परिचालनों का इलाज करने के कारण हुई, जिसमें कुछ प्रकार के सुरक्षा खतरे के रूप में पर्याप्त प्रतिक्रिया डेटा (दसियों किलोबाइट से अधिक) था। यदि इनमें से 6 से अधिक एक मिनट में होते हैं, तो होस्ट ने PHP कोड को निष्पादित करने से इनकार कर दिया जो अगले मिनट के दौरान POST अनुरोध का जवाब देता है। मुझे पूरी तरह से यकीन नहीं है कि मेजबान ने इसके बजाय क्या किया, लेकिन मैंने देखा, tcpdump के साथ, ब्राउज़र से एक POST अनुरोध के जवाब के रूप में आने वाला एक टीसीपी रीसेट पैकेट। इसके कारण http स्थिति कोड jqXHR ऑब्जेक्ट 0 में वापस आ गया।

POST से GET तक के कार्यों को बदलने से समस्या ठीक हो गई। यह स्पष्ट नहीं है कि गोडैडी ने यह सीमा क्यों लगाई, लेकिन कोड को बदलना मेजबान को बदलने की तुलना में आसान था।


1

मुझे लगता है कि मुझे पता है कि इस त्रुटि का कारण क्या हो सकता है।

Google chrome में google chrome extension के लिए ddos ​​हमलों को रोकने के लिए एक अंतर्निहित सुविधा है।

जब अजाक्स लगातार 500+ स्थिति की त्रुटियों को वापस करता है, तो यह अनुरोधों को समाप्त करना शुरू कर देता है।

इसलिए निम्नलिखित अनुरोधों पर स्थिति 0 प्राप्त करना संभव है।


1

वर्णित समस्या के लिए सबसे विनम्र कारण के लिए पुरस्कार जीतने की कोशिश में।

कॉल करना भूल गया

xmlhttp.send(); //yes, you need this pivotal line!

हां, मुझे अभी भी 'ओपन' कॉल से शून्य का स्टेटस रिटर्न मिल रहा था।


1

मेरे मामले में, मुझे यह मिल रहा था लेकिन केवल सफारी मोबाइल पर। समस्या यह है कि मैं रिश्तेदार के बजाय पूर्ण URL ( http://example.com/whatever.php ) का उपयोग कर रहा था (जो भी हो)। हालांकि इसका कोई मतलब नहीं है, यह एक XSS मुद्दा नहीं हो सकता क्योंकि मेरी साइट http://example.com पर होस्ट की गई है । मुझे लगता है कि सफारी http भाग को देखता है और स्वचालित रूप से इसे बाकी URL का निरीक्षण किए बिना असुरक्षित अनुरोध के रूप में चिह्नित करता है।


1

मेरे समस्या निवारण में, मुझे यह AJAX xmlhttpRequest.status == 0 मिला, जिसका अर्थ यह हो सकता है कि क्लाइंट कॉल अभी तक सर्वर तक नहीं पहुंची थी, लेकिन क्लाइंट की ओर से समस्या के कारण विफल रही। यदि प्रतिक्रिया सर्वर से थी, तो स्थिति उन 1xx / 2xx / 3xx / 4xx / 5xx HTTP रिस्पॉन्स कोड में से एक होनी चाहिए। इसके बाद, समस्या निवारण CLIENT मुद्दे पर ध्यान केंद्रित करेगा, और ऊपर @LLdondon द्वारा वर्णित इंटरनेट नेटवर्क कनेक्शन नीचे या उनमें से एक हो सकता है।


0

अनुरोध करते समय ब्राउज़र कंसोल का निरीक्षण करें, यदि आप "समान उत्पत्ति नीति को http ajax में दूरस्थ संसाधन को पढ़ने से रोकते हैं ..... कारण: कॉर्स हैडर का अभिगम-नियंत्रण-अनुमति-मूल 'गायब है" तो आपको करने की आवश्यकता है प्रतिक्रिया हैडर में "एक्सेस-कंट्रोल-अलाउंस-ओरिजिन" जोड़ें। exa: java में आप इसे response.setHeader ("Access-Control-Allow-Origin", "*") की तरह सेट कर सकते हैं, जहाँ प्रतिक्रिया HttpServletResponse है।

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