Pack Camo

HTTP Status Codes

हर HTTP status code, उसका मतलब और कब इस्तेमाल करें, सर्च के साथ।

सब कुछ लोकल तौर पर चलता है — कुछ भी अपलोड नहीं होता।

2xx · सफल

200 OK

IANA में पंजीकृतडिफ़ॉल्ट रूप से cache योग्य

मतलब

The request succeeded. The body holds the result: the resource for GET, the outcome of the action for POST.

कब इस्तेमाल करें

The default success response. Prefer 201 when something was created and 204 when there is nothing to return.

परिभाषित है

RFC 9110 §15.3.1(नए टैब में खुलता है)

Status line

HTTP/1.1 200 OK

HTTP/2 और HTTP/3 सिर्फ़ नंबर भेजते हैं, :status pseudo-header के रूप में; reason phrase सिर्फ़ HTTP/1.x में होता है।

हर HTTP status code, उसका मतलब और उसे कब भेजें

यह IANA रजिस्ट्री के सभी स्टैंडर्ड HTTP response status codes का सर्च करने योग्य रेफ़रेंस है, <code>100 Continue</code> से <code>511 Network Authentication Required</code> तक। हर कोड के साथ आसान भाषा में व्याख्या, सर्वर या API को इसे कब भेजना चाहिए इसकी सलाह, इसके साथ जाने वाले response हेडर और इसे परिभाषित करने वाले RFC का लिंक मिलता है। आम अनौपचारिक कोड — nginx का <code>499</code>, Laravel का <code>419</code>, Cloudflare के <code>520</code>–<code>526</code> — भी शामिल हैं और साफ़ तौर पर चिह्नित हैं। नंबर, नाम या "redirect" या "rate limit" जैसे कीवर्ड से सर्च करें।

Status code कैसे खोजें

  1. 1कोई कोड (404), उसकी शुरुआत (40), एक क्लास (4xx), नाम (teapot) या कीवर्ड (rate limit, cache, Retry-After) टाइप करें।
  2. 21xx–5xx फ़िल्टर से लिस्ट को एक क्लास तक सीमित करें, या अनौपचारिक कोड छिपाएँ।
  3. 3माउस या ऐरो कीज़ से कोई कोड चुनें और उसका मतलब, कब इस्तेमाल करें, जुड़े हेडर और स्पेसिफ़िकेशन देखें।
  4. 4कोड या पूरी status line कॉपी करें, या पेज का URL शेयर करें: यह #404 पर खत्म होता है और सीधे उसी कोड पर खुलता है।

Status codes की पाँच क्लास

जो क्लाइंट किसी अनजान कोड से मिलता है, वह उसे उसकी क्लास का x00 कोड मान लेता है, इसलिए अनजान 499 को 400 की तरह और अनजान 299 को 200 की तरह संभाला जाता है। इसी वजह से पुराने सॉफ़्टवेयर को तोड़े बिना नए कोड जोड़े जा सकते हैं।

1xx Informational
अंतिम response से पहले भेजे जाने वाले अस्थायी response: 100 Continue, WebSocket के लिए 101 Switching Protocols, प्रीलोडिंग के लिए 103 Early Hints।
2xx Success
रिक्वेस्ट सफल रही। 200 OK डिफ़ॉल्ट है; 201 Created और 204 No Content ज़्यादा सटीक बताते हैं कि क्या हुआ।
3xx Redirection
क्लाइंट को कहीं और देखना होगा, आमतौर पर Location हेडर के URL पर — या 304 Not Modified में, अपनी cached कॉपी इस्तेमाल करनी होगी।
4xx Client error
रिक्वेस्ट में गड़बड़ी थी: गलत फ़ॉर्मैट, बिना ऑथेंटिकेशन, प्रतिबंधित, किसी ऐसी चीज़ के लिए जो मौजूद नहीं, या बहुत बार-बार। बिना बदलाव के दोबारा भेजने से फ़ायदा नहीं होगा।
5xx Server error
रिक्वेस्ट शायद ठीक थी, लेकिन सर्वर या उसके पीछे कुछ फ़ेल हो गया। ये अक्सर अस्थायी होते हैं और back-off के साथ दोबारा कोशिश करना सही रहता है।

API के लिए सही कोड चुनना

ज़्यादातर API को बस दर्जन भर कोड चाहिए। सफलता के लिए: body के साथ 200, कुछ बनने पर Location हेडर के साथ 201, काम बाद में होने पर 202 और कुछ लौटाने को न होने पर 204। क्लाइंट एरर के लिए: गलत फ़ॉर्मैट वाली रिक्वेस्ट पर 400, सही फ़ॉर्मैट लेकिन वैलिडेशन में फ़ेल डेटा पर 422, क्रेडेंशियल न होने या अमान्य होने पर 401, मान्य लेकिन अपर्याप्त होने पर 403, अनजान रिसोर्स पर 404, डुप्लिकेट ईमेल जैसे टकराव पर 409 और rate limiting के लिए 429। सर्वर एरर के लिए: बग पर 500, और बीच के इंफ़्रास्ट्रक्चर में गड़बड़ी पर 502, 503 और 504।

कोड जो भी हो, उसे समझाने वाली body लौटाएँ। RFC 9457 "Problem Details" (application/problem+json) इस body को type, title, status और detail फ़ील्ड के साथ एक स्टैंडर्ड रूप देता है। body के अंदर एरर रखकर कभी 200 न लौटाएँ: cache, मॉनिटरिंग और retry लॉजिक सभी status code पढ़ते हैं, आपका JSON नहीं। ऐसी body को फ़ॉर्मैट करने के लिए JSON formatter इस्तेमाल करें।

अक्सर उलझन पैदा करने वाले कोड

401 vs 403
401 Unauthorized का मतलब है "मुझे नहीं पता आप कौन हैं": लॉग इन करें या वैध टोकन भेजें। 403 Forbidden का मतलब है "मुझे पता है आप कौन हैं, और आपको यह करने की अनुमति नहीं है"।
301 vs 302 vs 307 vs 308
301 और 308 स्थायी हैं और सर्च रैंकिंग नए URL को देते हैं; 302 और 307 अस्थायी हैं। 307 और 308 गारंटी देते हैं कि method और body वही रहेंगे, जबकि 301 और 302 पर ब्राउज़र POST को GET में बदल देते हैं।
400 vs 422
400 उन रिक्वेस्ट के लिए है जिन्हें सर्वर पार्स ही नहीं कर सकता; 422 ऐसे वैध JSON के लिए है जिसका कंटेंट नियम तोड़ता है, जैसे कोई ज़रूरी फ़ील्ड गायब होना।
404 vs 410
404 कहता है कि अभी यहाँ कुछ नहीं है; 410 कहता है कि यहाँ कुछ था और जानबूझकर हटाया गया, जिससे सर्च इंजन उसे जल्दी हटाते हैं।
502 vs 504
दोनों किसी proxy या load balancer से आते हैं। 502 का मतलब है upstream ने कुछ अमान्य जवाब दिया या कनेक्शन बंद कर दिया; 504 का मतलब है उसने समय पर जवाब नहीं दिया।
500 vs 503
500 एक अप्रत्याशित फ़ेलियर है, आमतौर पर बग। 503 एक ज्ञात, अस्थायी स्थिति है — मेंटेनेंस या ओवरलोड — और इसके साथ Retry-After होना चाहिए।

Status codes और SEO

सर्च इंजन status codes को ध्यान से पढ़ते हैं। जब कोई पेज स्थायी रूप से हटे तो 301 या 308 इस्तेमाल करें, ताकि उसकी रैंकिंग भी साथ जाए; 302 उन्हें बताता है कि पुराना URL ही इंडेक्स में रहेगा। गायब पेजों के लिए असली 404 या 410 दें — 200 लौटाने वाला "not found" पेज "soft 404" होता है और crawl budget बर्बाद करता है। मेंटेनेंस के दौरान Retry-After के साथ 503 लौटाएँ ताकि पेज इंडेक्स से न हटें। क्रॉलर क्या देख सकते हैं यह robots.txt generator से तय करें।

200, 203, 204, 206, 300, 301, 308, 404, 405, 410, 414, 451 और 501 वाले response को ब्राउज़र और CDN बिना स्पष्ट freshness हेडर के भी cache कर सकते हैं, इसलिए गलती से दिया गया 404 या 301 लंबे समय तक बना रह सकता है; इन पर Cache-Control सोच-समझकर सेट करें।

लॉग में दिखने वाले अनौपचारिक कोड

कुछ कोड IANA रजिस्ट्री में नहीं हैं लेकिन व्यवहार में आम हैं। जब क्लाइंट response से पहले कनेक्शन काट देता है तो nginx 499 लॉग करता है, और जब nginx बिना जवाब दिए कनेक्शन बंद करता है तो 444। जब Cloudflare को origin सर्वर से सही response नहीं मिलता तो वह 520–526 लौटाता है: 521 का मतलब origin ने कनेक्शन ठुकरा दिया, 522 का मतलब टाइम आउट हो गया, 524 का मतलब जवाब देने में 100 सेकंड से ज़्यादा लगे और 525/526 का मतलब origin से TLS फ़ेल हो गया। CSRF टोकन की अवधि खत्म होने पर Laravel 419 भेजता है। लिस्ट में इन्हें "अनौपचारिक" चिह्नित किया गया है, और इन्हें छिपाया जा सकता है।

अक्सर पूछे जाने वाले सवाल

HTTP status code क्या होता है?
हर HTTP response की शुरुआत में तीन अंकों की एक संख्या, जो क्लाइंट को बताती है कि रिक्वेस्ट का क्या हुआ। पहला अंक क्लास बताता है: 1xx informational, 2xx success, 3xx redirection, 4xx client error और 5xx server error।
401 और 403 में क्या अंतर है?
401 Unauthorized का मतलब है रिक्वेस्ट में वैध क्रेडेंशियल नहीं हैं, इसलिए लॉग इन करने से मदद मिल सकती है। 403 Forbidden का मतलब है सर्वर जानता है आप कौन हैं लेकिन आपके पास अनुमति नहीं है, इसलिए दोबारा लॉग इन करने से कुछ नहीं होगा।
Redirect के लिए 301 इस्तेमाल करें या 302?
जब बदलाव स्थायी हो, जैसे URL बदलना या डोमेन माइग्रेशन, तो 301 (या 308) इस्तेमाल करें; सर्च इंजन पेज की रैंकिंग नए पते पर ले जाते हैं। जब मूल URL वापस आने वाला हो, तो 302 (या 307) इस्तेमाल करें।
429 Too Many Requests का क्या मतलब है?
क्लाइंट पर rate limit लगी है। दोबारा कोशिश करने से पहले रुकें: Retry-After हेडर, अगर मौजूद हो, बताता है कि कितने सेकंड या किस समय तक रुकना है। क्लाइंट को तुरंत दोबारा कोशिश करने के बजाय exponential back-off अपनाना चाहिए।
502 Bad Gateway एरर क्यों आता है?
साइट के आगे लगे proxy, load balancer या CDN को पीछे वाले सर्वर से अमान्य response मिला — आमतौर पर इसलिए कि ऐप्लिकेशन क्रैश हुआ, रीस्टार्ट हुआ या उसने कनेक्शन बंद कर दिया। इसका हल सर्वर की तरफ़ है, upstream ऐप्लिकेशन के लॉग में।
499 status code क्या है?
nginx का अपना कोड, जो तब लॉग होता है जब nginx के response भेजने से पहले क्लाइंट कनेक्शन बंद कर देता है। क्लाइंट को यह कभी नहीं मिलता। बहुत सारे 499 का मतलब आमतौर पर यह होता है कि backend बहुत धीमा है और क्लाइंट इंतज़ार छोड़ रहे हैं।
क्या 418 I'm a teapot असली status code है?
इसकी शुरुआत RFC 2324 (1998) में अप्रैल फ़ूल के मज़ाक के तौर पर हुई थी। यह असली इस्तेमाल के लिए नहीं है, लेकिन क्योंकि बहुत सारे सॉफ़्टवेयर इसे लागू करते हैं, RFC 9110 ने 418 को आरक्षित कर दिया है ताकि यह कभी किसी और चीज़ को न दिया जाए।
कुल कितने HTTP status codes हैं?
IANA रजिस्ट्री लगभग 63 कोड परिभाषित करती है, जिनमें 306 और 305 जैसे कुछ आरक्षित या deprecated कोड भी शामिल हैं। 100 से 599 तक के कोड संभव हैं, और क्लाइंट किसी भी अनजान कोड को उसकी क्लास का x00 कोड मानते हैं।