HTTP स्टेटस कोड संदर्भ
स्पष्टीकरण और उपयोग के मामलों के साथ HTTP प्रतिक्रिया स्थिति कोड का पूर्ण संदर्भ।
HTTP स्टेटस कोड श्रेणियाँ
- 1xx (सूचनात्मक) · अनुरोध प्राप्त, प्रसंस्करण जारी।
- 2xx (सफलता) · अनुरोध सफलतापूर्वक प्राप्त, समझा गया और स्वीकार किया गया।
- 3xx (पुनर्निर्देशन) · अनुरोध पूरा करने के लिए अतिरिक्त क्रिया आवश्यक है।
- 4xx (क्लाइंट त्रुटियाँ) · अनुरोध में खराब सिंटैक्स या अपूर्णीय।
- 5xx (सर्वर त्रुटियाँ) · सर्वर वैध अनुरोध पूरा करने में विफल।
301 और 302 में क्या अंतर है?
301 Moved Permanently क्लाइंट को बताता है कि संसाधन स्थायी रूप से स्थानांतरित हो गया · खोज इंजन नए URL को इंडेक्स करते हैं। 302 Found अस्थायी है।
401 बनाम 403 कब उपयोग करें?
401 Unauthorized का अर्थ "अनप्रमाणित" · क्लाइंट को प्रमाणपत्र प्रदान करने चाहिए। 403 Forbidden का अर्थ है कि क्लाइंट प्रमाणित है परंतु उसकी पहुँच नहीं है।
स्टेटस कोड 418 का क्या अर्थ है?
418 "I'm a teapot" RFC 2324 (Hyper Text Coffee Pot Control Protocol) का एक अप्रैल फूल मज़ाक है।
तीन Decades के Drift के साथ एक Standard
HTTP status codes कई spec generations से live हैं। RFC 1945 (May 1996) ने HTTP/1.0 को basic 1xx-5xx categories के साथ standardise किया। RFC 2616 (June 1999) ने HTTP/1.1 ship किया और एक decade से अधिक के लिए canonical reference था। 7230-7235 series (June 2014) ने HTTP/1.1 को topic के हिसाब से multiple specs में split किया। Current consolidated standard RFC 9110 «HTTP Semantics» (June 2022) है, जो 7230-7235 split को obsolete करता है और modern work के लिए सही citation है। Assigned codes का full live registry IANA's HTTP status code registry पर live है।
एक नज़र में पांच Categories
- 1xx Informational: provisional response। Request received हुई और server इसे process करना continue कर रहा है। Practice में rare; protocol upgrades और modern
103 Early Hintsके लिए useful (जो server को full response ready होने से पहले critical resources preload करने देता है)। - 2xx Success: request received, understood, और accepted हुई।
200 OKeveryday case है; resource creation के लिए201 Created; कुछ भी return करने के लिए नहीं होने पर successful actions के लिए204 No Content। - 3xx Redirection: further action needed। Classic redirects (
301 Moved Permanently,302 Found,307 Temporary Redirect,308 Permanent Redirect) plus cache validation के लिए304 Not Modified। - 4xx Client Error: client ने कुछ गलत किया: bad syntax, missing auth, ऐसी कुछ request जो exist नहीं करती। Real-world traffic में सबसे बड़ी category।
- 5xx Server Error: server ने गड़बड़ी की। Request valid थी; server ने बस deliver नहीं किया। ये वो हैं जो on-call engineers को रात में जगाते हैं।
«vs» Comparisons जो सबको Trip करती हैं
401 vs 403. सबसे confusing pair। 401 Unauthorized का मतलब है «आपने authenticate नहीं किया है, login करने की कोशिश करें» (नाम technically misleading है, यह authentication के बारे में है, authorization के बारे में नहीं)। 403 Forbidden का मतलब है «आप authenticated हैं, लेकिन आपको यह करने की permission नहीं है», आपके credentials valid हैं लेकिन वे इस resource तक access grant नहीं करते। एक common misuse: unauthenticated requests के लिए 403 return करना जब 401 के साथ WWW-Authenticate header correct है।
301 vs 302 vs 307 vs 308. दो axes, permanent vs temporary, और method-preservation behaviour:
| कोड | Permanent? | Method बरकरार? | SEO ranking संकेत |
|---|---|---|---|
| 301 Moved Permanently | हां | ऐतिहासिक रूप से clients ने POST को → GET में change किया | Permanent, ranking नए URL को pass होती है |
| 302 Found | नहीं | ऐतिहासिक रूप से clients ने POST को → GET में change किया | Temporary, original URL ranking रखती है |
| 307 Temporary Redirect | नहीं | Strict, POST का POST रहता है | 302 जैसा |
| 308 Permanent Redirect | हां | Strict, POST का POST रहता है | 301 जैसा |
यदि आप SEO purposes के लिए GET requests redirect कर रहे हैं, तो 301 conventional choice है। यदि आप POST या PUT requests redirect कर रहे हैं और method preserved चाहते हैं, तो 307 या 308 चाहिए।
400 vs 422. 400 Bad Request syntactically malformed requests के लिए है, invalid JSON, missing required headers, malformed query parameters। 422 Unprocessable Entity (originally एक WebDAV code, REST APIs द्वारा widely adopted) syntactically valid requests के लिए है जिनमें semantic problems हों, JSON correctly parse होता है, लेकिन values business validation fail करती हैं (order पर negative quantity, email already in use)। कई APIs दोनों use करते हैं।
502 vs 503 vs 504. तीन different upstream-failure modes:
502 Bad Gateway: proxy / gateway को upstream server से invalid response मिली।503 Service Unavailable: server overloaded है या maintenance में है। अक्सरRetry-Afterheader के साथ paired होता है।504 Gateway Timeout: upstream server ने time पर respond नहीं किया।
404 vs 410. 404 Not Found है «हम नहीं जानते यह exist करता है या नहीं।» 410 Gone है «यह exist करता था, यह permanently removed है।» SEO impact: Google 410 को एक stronger signal treat करता है कि content permanently unavailable है और इसे 404 की तुलना में index से faster remove करता है।
REST API परंपराएं
Modern REST APIs ने काफी consistent set of conventions converge किए हैं कि किन actions के लिए कौन से status codes का क्या मतलब है:
| Method | सामान्य स्थिति | सामान्य errors |
|---|---|---|
| GET | body के साथ 200 OK, या cached होने पर 304 Not Modified | resource missing होने पर 404, forbidden होने पर 403 |
| POST (बनाना) | 201 Created, नए resource की ओर Location header के साथ | malformed body के लिए 400, validation errors के लिए 422, conflicts के लिए 409 |
| PUT (प्रतिस्थापित) / PATCH (अपडेट) | updated body के साथ 200 OK, या 204 No Content | resource missing होने पर 404, version conflicts के लिए 409 |
| DELETE | 204 No Content (या deletion confirmation के साथ 200) | missing होने पर 404 |
| कोई भी (rate-limited) | - | 429 Too Many Requests, Retry-After header के साथ |
| कोई भी (auth) | - | auth नहीं होने पर 401, authorised है लेकिन permitted नहीं होने पर 403 |
SEO प्रभाव
200 OK: Google normally page index करता है।301 Moved Permanently: Google indexed URL को नए पर update करता है और ranking signals transfer करता है।302 Found/307 Temporary Redirect: Google original URL को indexed रखता है; ranking original के साथ रहती है।308 Permanent Redirect: Google इसे 301 जैसा treat करता है: ranking transfer होती है।304 Not Modified: Googlebot द्वारा conditional requests के लिए use होता है; signal करता है कि cached content reuse हो सकती है।404 Not Found: Google URL को कुछ crawls के बाद index से remove करता है।410 Gone: Google URL को404की तुलना में faster remove करता है; stronger «permanently gone» signal।503 Service UnavailableRetry-Afterके साथ: Googlebot को later वापस आने के लिए बताता है। Maintenance windows के दौरान use करें; genuine errors के लिए503use करने से बचें (Google sustained 503s को crawl न करने की instructions के रूप में interpret करता है)।5xxsustained: Google crawl rate कम करता है और eventually URL को index से पूरी तरह drop कर सकता है।
Famous & Cultural Codes
418 I'm a teapot: RFC 2324 (Hyper Text Coffee Pot Control Protocol, 1 April 1998) से एक April Fools' joke। जब IETF ने 2017 में इसे spec से drop करने का proposal किया, तो «Save 418» campaign ने इसे books पर successfully रखा। कुछ APIs इसे «this isn't real» marker के रूप में use करते हैं; otherwise harmless।451 Unavailable For Legal Reasons: RFC 7725 (2015), Ray Bradbury की Fahrenheit 451 के नाम पर। जब content court order या government request द्वारा censored हो तब return होता है।- Cloudflare की 520-527 series: non-standard, specific upstream-server connection failures indicate करने के लिए Cloudflare द्वारा use की जाती है। Common जब Cloudflare के पीछे किसी site में problems हों।
- Nginx का
444 No Response: Nginx-specific, जब server बिना कोई response भेजे connection close करता है तब return होता है। - Twitter का historical
420 Enhance Your Calm: Twitter के earlier API द्वारा use किया गया एक since-removed rate-limit code; standard429द्वारा replace किया गया।
सामान्य गलतियाँ
- Errors के लिए
200 OKuse करना error body के साथ।{"error": "not found"}को 200 status के साथ return करना हर caching layer, monitoring tool, और client SDK को confuse करता है। सही status code use करें। - Unauthenticated requests के लिए
403return करना। सही code401हैWWW-Authenticateheader के साथ। 302use करना जब301का मतलब हो। यदि move permanent है, तो search engines को ranking transfer करने के लिए301चाहिए।302old URL को indexed रखता है।- POST/PUT redirects के लिए
301या302use करना। ऐतिहासिक रूप से इन्होंने clients को method को GET में change करने की permission दी।307और308strictly original method preserve करते हैं। 500return करना जब503का मतलब हो। यदि server overloaded है या maintenance में है, तो503Retry-Afterके साथ सही signal है, clients और Googlebot दोनों के लिए।- Permanently-removed pages के लिए
404use करना।410 Gonestronger signal है और search-engine indexes से faster remove होता है। Locationheader भूलना201और3xxresponses पर।Locationheader ही client को बताता है कि नया resource कहां live करता है या redirect कहां करना है। इसके बिना, clients navigate नहीं कर सकते।
अधिक अक्सर पूछे जाने वाले प्रश्न
मुझे 422 कब return करना चाहिए 400 की जगह?
400 Bad Request का मतलब है request itself malformed है, invalid JSON, missing required headers, malformed query parameters। 422 Unprocessable Entity का मतलब है request well-formed है लेकिन इसमें semantic errors हैं जो processing prevent करती हैं, एक quantity field जो negative number पर set है, एक email address जो already in use है, एक future-only field के लिए past date। Modern REST API conventions इस split पर converge हो गए हैं, अधिकांश large APIs (GitHub, Stripe, Twilio) validation errors के लिए 422 use करते हैं।
Cloudflare sometimes 520, 521, 522… क्यों return करता है?
520-527 codes Cloudflare-specific हैं, different ways signal करते हैं जिनसे उनका edge आपके origin server तक नहीं पहुंच सका। 520 generic «web server returned an unknown error» है; 521 का मतलब आपके origin ने connection refuse किया; 522 आपके origin में connection timeout है; 524 का मतलब आपके origin ने respond करने में बहुत लंबा समय लिया। ये IANA registry में नहीं हैं लेकिन widely encountered हैं जब Cloudflare के पीछे sites में backend issues होती हैं।
क्या मेरा browser मुझे बताएगा कि मेरे API ने कौन सा code return किया?
हां, DevTools → Network tab open करें, request पर click करें, और «Status» column देखें। Browsers कुछ codes के लिए generic pages भी display करते हैं (Chrome के connection failures पर dinosaur game, standard 404 / 500 pages); लेकिन actual numeric code हमेशा response में होता है।
103 Early Hints क्या है?
A relatively new (RFC 8297, 2017) 1xx code जो server को full response ready होने से पहले Link: rel=preload headers send करने देता है, browser को critical resources (CSS, fonts, images) पहले से fetch करना शुरू करने के लिए बताता है। अब Chrome द्वारा supported और Cloudflare, Fastly, और अन्य CDNs द्वारा performance optimisation के रूप में shipped।
क्या मैं अपना खुद का status code बना सकता हूं?
Technically हां (HTTP 100-599 range में किसी भी 3-digit code को allow करता है। Practically नहीं) clients, proxies, और caches unknown codes को उनके first digit से treat करते हैं (तो 4xx = generic client error, 5xx = server error)। कुछ vendors ऐसा करते हैं (Cloudflare के 520s, Nginx के 444), लेकिन जब तक आप wire के दोनों ends control नहीं करते, IANA registry से stick रहें। एक 299 invent करना चीज़ें break नहीं करेगा लेकिन कुछ communicate भी नहीं करेगा।
«status code» को «status» क्यों कहा जाता है और «error code» नहीं?
क्योंकि उनमें से ज़्यादातर errors नहीं हैं। 200 OK दुनिया में सबसे ज़्यादा returned status code है, इसका मतलब है «everything went fine.» Codes request के status communicate करते हैं: success, redirect, client error, server error। उन्हें «error codes» कहना negative cases की ओर bias करता है जो logged और noticed होते हैं; success codes हर microsecond चुपचाप अपना काम कर रहे होते हैं।