HTTP स्टेटस कोड रेफ़रेंस
हर HTTP रिस्पॉन्स तीन अंकों वाले स्टेटस कोड से शुरू होता है, जो क्लाइंट को बताता है कि रिक्वेस्ट का क्या हुआ। यहां सभी कोड कैटेगरी के हिसाब से देखें, साथ में आसान भाषा में समझाया गया मतलब, उदाहरण रिस्पॉन्स और यह कि रीडायरेक्ट और SEO पर हर कोड का क्या असर होता है।
1xx सूचनात्मक
रिक्वेस्ट मिल गई है और उस पर काम जारी है। ये बीच के (अंतरिम) रिस्पॉन्स अंतिम रिस्पॉन्स से पहले आते हैं, और इनसे रीडायरेक्ट चेन कभी खत्म नहीं होती।
- 100
Continue
अंतरिम रिस्पॉन्स: सर्वर ने रिक्वेस्ट हेडर स्वीकार कर लिए हैं, इसलिए “Expect: 100-continue” भेजने वाला क्लाइंट अब रिक्वेस्ट बॉडी भेजे। - 101
Switching Protocols
सर्वर क्लाइंट की Upgrade रिक्वेस्ट मान लेता है और इस कनेक्शन को दूसरे प्रोटोकॉल पर बदल देता है। व्यवहार में यह लगभग हमेशा WebSocket होता है। - 102
Processing
WebDAV का पुराना, अब बंद हो चुका अंतरिम रिस्पॉन्स: सर्वर अब भी लंबी रिक्वेस्ट पर काम कर रहा है, इसलिए क्लाइंट इंतज़ार करता रहे। - 103
Early Hints
अंतरिम रिस्पॉन्स, जो अंतिम रिस्पॉन्स से पहले Link हेडर भेजता है, ताकि सर्वर के काम करते-करते ब्राउज़र एसेट प्रीलोड या प्रीकनेक्ट कर सके।
2xx सफल
रिक्वेस्ट मिल गई, समझ ली गई और स्वीकार कर ली गई। सही तरह से काम करने वाली रीडायरेक्ट चेन इन्हीं में से किसी कोड पर खत्म होती है, आम तौर पर 200 OK पर।
- 200
OK
रिक्वेस्ट सफल रही; GET के लिए बॉडी में मांगा गया रिसोर्स होता है। हर रीडायरेक्ट चेन ऐसे URL पर खत्म होनी चाहिए जो 200 लौटाए। - 201
Created
रिक्वेस्ट सफल रही और एक नया रिसोर्स बना, आम तौर पर POST या PUT के बाद। अगर Location हेडर मौजूद है, तो वह नए रिसोर्स की ओर इशारा करता है। - 202
Accepted
रिक्वेस्ट प्रोसेसिंग के लिए स्वीकार हो गई है, पर अभी पूरी नहीं हुई। एसिंक्रोनस जॉब में इस्तेमाल होता है; अंतिम नतीजे की कोई गारंटी नहीं है। - 203
Non-Authoritative Information
रिक्वेस्ट सफल रही, लेकिन किसी ट्रांसफ़ॉर्मिंग प्रॉक्सी ने रिस्पॉन्स बदल दिया, इसलिए कॉन्टेंट ठीक वैसा नहीं जैसा ओरिजिन सर्वर ने भेजा था। - 204
No Content
रिक्वेस्ट सफल रही और भेजने के लिए कोई कॉन्टेंट नहीं है। ब्राउज़र मौजूदा पेज पर ही रहते हैं; DELETE, बीकन और CORS प्रीफ़्लाइट में आम है। - 205
Reset Content
रिक्वेस्ट सफल रही और क्लाइंट को डॉक्यूमेंट व्यू रीसेट करना चाहिए, जैसे अभी-अभी सबमिट किया गया फ़ॉर्म खाली करना। - 206
Partial Content
सर्वर सिर्फ़ वे बाइट रेंज भेजता है जो क्लाइंट ने Range हेडर से मांगी थीं, जैसे वीडियो स्ट्रीमिंग या रुका डाउनलोड दोबारा शुरू करने में। - 207
Multi-Status
WebDAV रिस्पॉन्स जो XML multistatus बॉडी में कई रिसोर्स या प्रॉपर्टी में से हर एक के लिए अलग स्टेटस कोड देता है। - 208
Already Reported
WebDAV 207 रिस्पॉन्स के अंदर इस्तेमाल होता है: इस कलेक्शन के सदस्य पहले ही लिस्ट हो चुके हैं, ताकि बाइंडिंग लूप में अंतहीन दोहराव न हो। - 226
IM Used
सर्वर ने GET का जवाब डेल्टा एन्कोडिंग (RFC 3229) से दिया: बॉडी में सिर्फ़ उस वर्शन के बाद हुए बदलाव हैं, जो क्लाइंट के पास पहले से है।
3xx रीडायरेक्ट
क्लाइंट को आगे कोई कदम उठाना होता है, आम तौर पर Location हेडर में दिए गए URL पर नई रिक्वेस्ट भेजकर। रीडायरेक्ट चेन इन्हीं कोड से बनती है।
- 300
Multiple Choices
रिसोर्स के कई रूप हैं और क्लाइंट इनमें से एक चुन सकता है। Location हेडर होने पर भी ब्राउज़र 300 को अपने आप फ़ॉलो नहीं करते। - 301
Moved Permanently
रिसोर्स का एक नया स्थायी URL है, जो Location हेडर में दिया गया है। क्लाइंट और सर्च इंजन को अब से नया URL इस्तेमाल करना चाहिए। - 302
Found
रिसोर्स अस्थायी रूप से किसी दूसरे URL पर है। क्लाइंट Location हेडर को फ़ॉलो करते हैं, लेकिन आगे भी उन्हें मूल URL ही इस्तेमाल करना चाहिए। - 303
See Other
क्लाइंट को दूसरे URL पर भेजता है, जिसे GET से लाना होता है; आम तौर पर फ़ॉर्म सबमिट के बाद नतीजे का पेज दिखाने के लिए (Post/Redirect/Get)। - 304
Not Modified
कंडीशनल GET या HEAD का जवाब: क्लाइंट की कैश की गई कॉपी अब भी मान्य है, इसलिए सर्वर बॉडी नहीं भेजता और वही कॉपी दोबारा इस्तेमाल होती है। - 305
Use Proxy
डेप्रिकेटेड। क्लाइंट से Location वाले प्रॉक्सी के ज़रिए रिक्वेस्ट दोबारा भेजने को कहता था; सुरक्षा कारणों से ब्राउज़र इसे अनदेखा करते हैं। - 306
Unused (पहले Switch Proxy)
रिज़र्व, इस्तेमाल न करें। 306 कभी “Switch Proxy” के रूप में प्रस्तावित हुआ था, पर छोड़ दिया गया; क्लाइंट इसे अनजान 3xx कोड मानते हैं। - 307
Temporary Redirect
अस्थायी रीडायरेक्ट, जिसमें Location वाले URL पर रिक्वेस्ट उसी मेथड और बॉडी के साथ दोहरानी होती है; जबकि 302 में POST बदलकर GET हो सकता है। - 308
Permanent Redirect
स्थायी रीडायरेक्ट, जो रिक्वेस्ट मेथड और बॉडी को वैसा ही रखता है। 301 की तरह अब से नया URL इस्तेमाल होना चाहिए, लेकिन POST कभी GET नहीं बनता।
4xx क्लाइंट एरर
भेजी गई रिक्वेस्ट को उसी रूप में पूरा नहीं किया जा सकता: पेज मौजूद नहीं है, ऐक्सेस से मना कर दिया गया है या क्लाइंट ने बहुत ज़्यादा रिक्वेस्ट भेज दी हैं।
- 400
Bad Request
क्लाइंट की किसी गलती की वजह से सर्वर रिक्वेस्ट प्रोसेस नहीं करेगा, जैसे गलत सिंटैक्स, अमान्य URL या बहुत बड़ी कुकीज़। - 401
Unauthorized
रिक्वेस्ट के लिए वैध ऑथेंटिकेशन ज़रूरी है। सर्वर को WWW-Authenticate हेडर में ऑथेंटिकेशन का तरीका बताना होता है, जैसे Basic या Bearer। - 402
Payment Required
HTTP में भविष्य के इस्तेमाल के लिए रिज़र्व। व्यवहार में कुछ API और सेवाएं इसे पेमेंट, क्रेडिट या सब्सक्रिप्शन की ज़रूरत होने पर लौटाती हैं। - 403
Forbidden
सर्वर ने रिक्वेस्ट समझ ली है, लेकिन उसे अनुमति देने से मना करता है। 401 के उलट, वही क्रेडेंशियल दोबारा भेजने से कोई फ़ायदा नहीं होगा। - 404
Not Found
सर्वर के पास इस URL पर कुछ नहीं है, या वह बताना नहीं चाहता कि कुछ मौजूद है या नहीं। यह भी पता नहीं चलता कि यह कमी अस्थायी है या स्थायी। - 405
Method Not Allowed
URL मौजूद है, पर इस्तेमाल किए गए HTTP मेथड को सपोर्ट नहीं करता, जैसे किसी स्टैटिक पेज पर POST। Allow हेडर सपोर्ट होने वाले मेथड बताता है। - 406
Not Acceptable
सर्वर क्लाइंट के Accept हेडर (फ़ॉर्मैट, भाषा, एन्कोडिंग) से मेल खाने वाला रिस्पॉन्स नहीं बना सकता और कोई डिफ़ॉल्ट रूप भी नहीं भेजेगा। - 407
Proxy Authentication Required
401 जैसा, लेकिन यहां क्लाइंट और सर्वर के बीच का कोई प्रॉक्सी ऑथेंटिकेशन मांगता है। Proxy-Authenticate हेडर बताता है कि ऑथेंटिकेट कैसे करें। - 408
Request Timeout
सर्वर को समय पर पूरी रिक्वेस्ट नहीं मिली और वह कनेक्शन बंद कर देता है। क्लाइंट नए कनेक्शन पर रिक्वेस्ट दोबारा भेज सकता है। - 409
Conflict
रिक्वेस्ट रिसोर्स की मौजूदा स्थिति से टकराती है, जैसे एडिट कॉन्फ़्लिक्ट, डुप्लीकेट रिकॉर्ड या वर्शन का मेल न खाना। - 410
Gone
रिसोर्स जानबूझकर हटाया गया है और उसके वापस आने की उम्मीद नहीं है। यह 404 Not Found से ज़्यादा साफ़ और स्थायी संकेत है। - 411
Length Required
सर्वर ऐसी रिक्वेस्ट मना कर देता है जिसमें बॉडी हो, लेकिन Content-Length हेडर न हो। क्लाइंट वैध Content-Length के साथ इसे दोबारा भेज सकता है। - 412
Precondition Failed
रिक्वेस्ट हेडर की कोई शर्त, जैसे If-Match या If-Unmodified-Since, गलत निकली, इसलिए सर्वर ने बदलाव लागू नहीं किया। - 413
Content Too Large
रिक्वेस्ट बॉडी सर्वर की तय सीमा से बड़ी है, जैसे बहुत बड़े अपलोड में। पहले इसका नाम “Payload Too Large” और “Request Entity Too Large” था। - 414
URI Too Long
मांगा गया URL उससे लंबा है जितना सर्वर प्रोसेस करेगा, जैसे जब कोई रीडायरेक्ट लूप URL में बार-बार पैरामीटर जोड़ता रहता है। - 415
Unsupported Media Type
सर्वर रिक्वेस्ट बॉडी को मना कर देता है, क्योंकि उसका फ़ॉर्मैट (Content-Type) या कॉन्टेंट कोडिंग (Content-Encoding) सपोर्ट नहीं होता। - 416
Range Not Satisfiable
रिक्वेस्ट के Range हेडर में दी गई बाइट रेंज फ़ाइल से बाहर है, जैसे जब बदल चुकी फ़ाइल का डाउनलोड उसके आखिर से आगे से दोबारा शुरू हो। - 417
Expectation Failed
सर्वर रिक्वेस्ट के Expect हेडर में दी गई अपेक्षा पूरी नहीं कर सकता। व्यवहार में इसका मतलब है कि Expect: 100-continue सपोर्ट नहीं होता। - 418
I'm a Teapot
1998 के कॉफ़ी पॉट प्रोटोकॉल (RFC 2324) का अप्रैल फ़ूल मज़ाक। HTTP में रिज़र्व और इस्तेमाल से बाहर, पर कुछ साइटें इसे जानबूझकर लौटाती हैं। - 421
Misdirected Request
रिक्वेस्ट ऐसे सर्वर पर पहुंची जो इस होस्ट नेम के लिए जवाब नहीं दे सकता, अक्सर TLS SNI मेल न खाने या दोबारा इस्तेमाल हुए HTTP/2 कनेक्शन से। - 422
Unprocessable Content
रिक्वेस्ट सही ढंग से बनी है, पर उसका कॉन्टेंट अर्थ के हिसाब से अमान्य है, आम तौर पर API में वैलिडेशन एरर। पुराना नाम “Unprocessable Entity”। - 423
Locked
WebDAV: रिसोर्स लॉक है, इसलिए यह मेथड अभी लागू नहीं हो सकता। क्लाइंट को लॉक टोकन चाहिए या लॉक खत्म होने तक इंतज़ार करना होगा। - 424
Failed Dependency
WebDAV: मेथड पूरा नहीं हो सका, क्योंकि जिस दूसरी कार्रवाई पर यह निर्भर था, वह फ़ेल हो गई, जैसे PROPPATCH में कोई एक प्रॉपर्टी। - 425
Too Early
सर्वर TLS अर्ली डेटा (0-RTT) में आई रिक्वेस्ट प्रोसेस नहीं करेगा, क्योंकि उसे रीप्ले किया जा सकता है। क्लाइंट हैंडशेक के बाद फिर भेजता है। - 426
Upgrade Required
सर्वर मौजूदा प्रोटोकॉल पर रिक्वेस्ट हैंडल करने से मना करता है और Upgrade हेडर में बताए गए प्रोटोकॉल पर अपग्रेड मांगता है। - 428
Precondition Required
सर्वर चाहता है कि रिक्वेस्ट कंडीशनल (If-Match) हो, ताकि कई क्लाइंट के एक ही रिसोर्स एडिट करने पर अपडेट खो न जाएं। - 429
Too Many Requests
क्लाइंट ने तय समय में बहुत ज़्यादा रिक्वेस्ट भेजीं (रेट लिमिट)। Retry-After हेडर बता सकता है कि दोबारा कोशिश से पहले कितना इंतज़ार करें। - 431
Request Header Fields Too Large
सर्वर रिक्वेस्ट मना कर देता है, क्योंकि उसके हेडर बहुत बड़े हैं; आम तौर पर इसलिए कि ब्राउज़र बहुत ज़्यादा या बहुत बड़ी कुकीज़ भेजता है। - 444
No Response
nginx nginx का नॉन-स्टैंडर्ड कोड: सर्वर कोई भी रिस्पॉन्स भेजे बिना कनेक्शन बंद कर देता है। क्लाइंट को खाली जवाब मिलता है, 444 कभी नहीं। - 451
Unavailable For Legal Reasons
कानूनी मांग, जैसे कोर्ट के आदेश या सरकारी ब्लॉक, की वजह से ऐक्सेस रोका गया है। नंबर रे ब्रैडबरी के उपन्यास Fahrenheit 451 से लिया गया है। - 499
Client Closed Request
nginx nginx का नॉन-स्टैंडर्ड कोड, जिसे वह अपने ऐक्सेस लॉग में तब लिखता है जब सर्वर का रिस्पॉन्स जाने से पहले ही क्लाइंट ने कनेक्शन बंद कर दिया हो।
5xx सर्वर एरर
रिक्वेस्ट देखने में सही थी, फिर भी सर्वर उसे पूरा नहीं कर पाया। लगातार आने वाले 5xx एरर विज़िटर और क्रॉलर, दोनों का रास्ता रोक देते हैं।
- 500
Internal Server Error
सर्वर-साइड का सामान्य एरर: सर्वर पर कुछ गलत हो गया, जैसे ऐप्लिकेशन क्रैश हो गया या कॉन्फ़िगरेशन फ़ाइल खराब है। - 501
Not Implemented
सर्वर रिक्वेस्ट पूरी करने के लिए ज़रूरी फ़ंक्शनैलिटी सपोर्ट नहीं करता; आम तौर पर कोई ऐसा HTTP मेथड, जिसे वह पहचानता ही नहीं। - 502
Bad Gateway
किसी गेटवे या प्रॉक्सी को अपस्ट्रीम सर्वर से अमान्य रिस्पॉन्स मिला, जैसे तब, जब nginx के पीछे का ऐप्लिकेशन क्रैश हो गया हो। - 503
Service Unavailable
ओवरलोड या मेंटेनेंस की वजह से सर्वर अभी कुछ समय के लिए रिक्वेस्ट हैंडल नहीं कर सकता। Retry-After बता सकता है कि दोबारा कब कोशिश करें। - 504
Gateway Timeout
किसी गेटवे या प्रॉक्सी को अपस्ट्रीम सर्वर से समय पर रिस्पॉन्स नहीं मिला; आम तौर पर इसलिए कि ऐप्लिकेशन बहुत धीमा है। - 505
HTTP Version Not Supported
सर्वर रिक्वेस्ट में इस्तेमाल हुए मेजर HTTP वर्शन को सपोर्ट नहीं करता या करने से मना करता है। आजकल यह अक्सर गलत रिक्वेस्ट लाइन का इशारा है। - 506
Variant Also Negotiates
ट्रांसपेरेंट कॉन्टेंट नेगोशिएशन (RFC 2295) में सर्वर कॉन्फ़िगरेशन एरर: चुना गया वैरिएंट खुद नेगोशिएबल है, जिससे लूप बन जाता है। - 507
Insufficient Storage
WebDAV: सर्वर रिक्वेस्ट पूरी करने के लिए ज़रूरी डेटा स्टोर नहीं कर सकता, जैसे जब डिस्क या यूज़र कोटा भर गया हो। - 508
Loop Detected
WebDAV: सर्वर ने Depth: infinity वाला ऑपरेशन रोक दिया, क्योंकि उसे बाइंडिंग का अंतहीन लूप मिला। इसका रीडायरेक्ट लूप से कोई संबंध नहीं है। - 510
Not Extended
पुराने HTTP Extension Framework (RFC 2774) से: रिक्वेस्ट में एक ज़रूरी एक्सटेंशन डिक्लेरेशन नहीं है। ऐतिहासिक, व्यवहार में इस्तेमाल से बाहर। - 511
Network Authentication Required
नेटवर्क (आम तौर पर Wi-Fi का कैप्टिव पोर्टल) ऐक्सेस से पहले साइन-इन मांगता है। इसे ओरिजिन सर्वर नहीं, बीच में रोकने वाले नेटवर्क भेजते हैं। - 520
Web Server Returned an Unknown Error
Cloudflare Cloudflare का अपना कोड: ओरिजिन सर्वर ने खाली, अनजान या अनपेक्षित रिस्पॉन्स लौटाया, जैसे क्रैश के बाद या कनेक्शन रीसेट होने पर। - 521
Web Server Is Down
Cloudflare Cloudflare का अपना कोड: ओरिजिन सर्वर ने Cloudflare का कनेक्शन मना किया, आम तौर पर क्योंकि वेब सर्वर बंद है या Cloudflare को ब्लॉक करता है। - 522
Connection Timed Out
Cloudflare Cloudflare का अपना कोड: Cloudflare समय पर ओरिजिन से TCP कनेक्शन नहीं बना सका, या ओरिजिन ने रिक्वेस्ट मिलने की पुष्टि नहीं की। - 523
Origin Is Unreachable
Cloudflare Cloudflare का अपना कोड: Cloudflare ओरिजिन तक बिल्कुल नहीं पहुंच पा रहा, आम तौर पर रूटिंग की समस्या या DNS में गलत ओरिजिन IP एड्रेस से। - 524
A Timeout Occurred
Cloudflare Cloudflare का अपना कोड: Cloudflare ओरिजिन से कनेक्ट हुआ, पर रीड टाइमआउट (डिफ़ॉल्ट रूप से करीब दो मिनट) से पहले कोई HTTP रिस्पॉन्स नहीं मिला। - 525
SSL Handshake Failed
Cloudflare Cloudflare का अपना कोड: Cloudflare और ओरिजिन के बीच TLS हैंडशेक फ़ेल हो गया, जैसे जब ओरिजिन पर कोई वैध सर्टिफ़िकेट न हो। - 526
Invalid SSL Certificate
Cloudflare Cloudflare का अपना कोड: Full (strict) मोड में ओरिजिन का सर्टिफ़िकेट वैलिडेट नहीं हुआ, जैसे वह एक्सपायर्ड, सेल्फ़-साइन्ड या दूसरे नाम का है। - 530
Cloudflare 1xxx एरर
Cloudflare Cloudflare का अपना कोड: Cloudflare के किसी 1xxx एरर के साथ भेजा जाता है, जैसे 1016 (Origin DNS error) या 1033 (Cloudflare Tunnel error)।
HTTP स्टेटस कोड को कैसे पढ़ें
पहला अंक रिस्पॉन्स की कैटेगरी बताता है, और बाकी दो अंक उस कैटेगरी के अंदर सटीक मतलब बताते हैं। अगर कोई क्लाइंट किसी खास कोड को नहीं पहचानता, तो वह उसे उसकी कैटेगरी के x00 कोड जैसा मानता है। यानी किसी अनजान 4xx कोड को 400 Bad Request की तरह हैंडल किया जाता है।
नंबर के बाद लिखा रीज़न फ़्रेज़ (reason phrase), जैसे Not Found या Moved Permanently, सिर्फ़ इंसानों के पढ़ने के लिए लिखा गया विवरण है। क्लाइंट केवल नंबर देखकर काम करते हैं, और HTTP/2 और HTTP/3 तो रीज़न फ़्रेज़ भेजते ही नहीं।
रीडायरेक्ट स्टेटस कोड एक नज़र में
- 301 Moved Permanently: स्थायी; ब्राउज़र POST को GET में बदल सकते हैं। किसी पेज को नए URL पर ले जाने के लिए यही डिफ़ॉल्ट विकल्प है।
- 302 Found: अस्थायी; मेथड बदल सकता है। कई फ़्रेमवर्क में यही डिफ़ॉल्ट होता है।
- 303 See Other: अस्थायी; अगली रिक्वेस्ट हमेशा GET से होती है। फ़ॉर्म सबमिट होने के बाद इस्तेमाल होता है।
- 307 Temporary Redirect: अस्थायी; मेथड और बॉडी वैसे ही रहते हैं।
- 308 Permanent Redirect: स्थायी; मेथड और बॉडी वैसे ही रहते हैं।
- 304 Not Modified: यह किसी दूसरे URL पर रीडायरेक्ट नहीं है, बल्कि इस बात का संकेत है कि क्लाइंट के कैश में रखी कॉपी अब भी मान्य है।
हर कोड कब इस्तेमाल करना चाहिए, यह जानने के लिए HTTP रीडायरेक्ट स्टेटस कोड की आसान गाइड पढ़ें।
रीडायरेक्ट चेन में स्टेटस कोड
रीडायरेक्ट चेन एक के बाद एक आने वाले 3xx रिस्पॉन्स की कड़ी होती है, जो आखिर में एक अंतिम रिस्पॉन्स पर खत्म होती है। विज़िटर या क्रॉलर को असल में सिर्फ़ आखिरी स्टेटस कोड ही मिलता है। इसलिए जो चेन 404 पर खत्म होती है, वह एक टूटा हुआ लिंक (broken link) है, चाहे उससे पहले के रीडायरेक्ट कितने भी सही दिखें। हर हॉप (रीडायरेक्ट चेन का एक कदम) का स्टेटस कोड देखने के लिए URL रीडायरेक्ट चेकर इस्तेमाल करें, और एक साथ कई URL जांचने के लिए बल्क रीडायरेक्ट चेकर।
URL रीडायरेक्ट चेकर
TrueURL के मुफ़्त रीडायरेक्ट चेकर से देखें कि कोई URL हर हॉप पर कौन-सा स्टेटस कोड लौटाता है।