होम·HTTP कोड और हेडर

132 HTTP स्थिति कोड और हेडर

404 और 500 का असल अर्थ, और Content-Type या Cache-Control क्या करते हैं — एक-एक पंक्ति में।

स्थिति कोड

1xx सूचना4

प्रगति की सूचना; असली उत्तर बाद में आता है।

2xx सफलता10

अनुरोध सफल रहा।

200 OKअनुरोध सफल रहा — सबसे आम प्रतिक्रिया।201 Createdनया संसाधन बना; Location हेडर में उसका पता होता है।202 Acceptedअनुरोध स्वीकार हुआ, पर अभी पूरा नहीं हुआ।203 Non-Authoritative Informationउत्तर मूल सर्वर से नहीं, बीच के प्रॉक्सी से बदला हुआ आया है।204 No Contentसफल, पर लौटाने को कुछ नहीं — सहेजने के बाद पन्ना वैसा ही रखने में उपयोगी।205 Reset Contentसफल — भेजा गया फ़ॉर्म ख़ाली कर देना चाहिए।206 Partial Contentसिर्फ़ माँगा गया हिस्सा भेजा गया — इसी से डाउनलोड फिर से शुरू होना और वीडियो में आगे-पीछे जाना चलता है।207 Multi-Statusएक ही उत्तर में कई संसाधनों के परिणाम।208 Already Reportedपहले ही बताया जा चुका है, इसलिए दोहराया नहीं गया।226 IM Usedमाँगे गए संसाधन का सिर्फ़ बदला हुआ हिस्सा भेजा गया।

3xx पुनर्निर्देश7

कहीं और जाइए — फ़र्क़ बस स्थायी और अस्थायी का है।

4xx क्लाइंट त्रुटि29

समस्या अनुरोध की ओर है; वही दोबारा भेजने पर फिर विफल होगा।

400 Bad Requestअनुरोध ही ग़लत है और पढ़ा नहीं जा सकता।401 Unauthorizedआपने बताया नहीं कि आप कौन हैं; लॉगिन करने पर आमतौर पर हल हो जाता है।402 Payment Requiredभुगतान चाहिए — मानक में है, पर व्यवहार में कम ही दिखता है।403 Forbiddenसर्वर जानता है कि आप कौन हैं, फिर भी अनुमति नहीं है; लॉगिन करने से शायद कुछ न बदले।404 Not Foundउस पते पर कुछ नहीं है — URL ग़लत है या पन्ना हट चुका है।405 Method Not Allowedपता है, पर वह विधि स्वीकार नहीं करता।406 Not Acceptableसर्वर माँगा गया प्रारूप नहीं दे सकता।407 Proxy Authentication Requiredबीच का प्रॉक्सी पहले प्रमाणीकरण माँगता है।408 Request Timeoutसर्वर ने प्रतीक्षा की, पर अनुरोध पूरा नहीं पहुँचा।409 Conflictअनुरोध मौजूदा स्थिति से टकराता है — दो लोग साथ बदलें तो यही आता है।410 Goneजानबूझकर हटाया गया और लौटेगा नहीं — 404 से साफ़ विदाई।411 Length Requiredअनुरोध ने मुख्य भाग की लंबाई नहीं बताई।412 Precondition Failedअनुरोध के साथ भेजी शर्त पूरी नहीं हुई।413 Content Too Largeभेजा गया मुख्य भाग सर्वर की सीमा से बड़ा है।414 URI Too LongURL बहुत लंबा है — आमतौर पर बहुत सारे क्वेरी पैरामीटर से।415 Unsupported Media Typeसर्वर भेजे गए मीडिया प्रकार को नहीं संभाल सकता।416 Range Not Satisfiableमाँगा गया परिसर फ़ाइल के बाहर है।417 Expectation FailedExpect हेडर में बताई अपेक्षा पूरी नहीं की जा सकती।418 I'm a teapotमज़ाक़ का कोड: चायदानी कॉफ़ी बनाने से मना करती है।421 Misdirected Requestयह अनुरोध इस सर्वर के लिए नहीं है।422 Unprocessable Contentवाक्य-रचना ठीक है पर सामग्री नियम तोड़ती है, इसलिए काम नहीं हो सकता।423 Lockedसंसाधन लॉक है।424 Failed Dependencyपिछला अनुरोध विफल रहा, इसलिए यह भी नहीं हो सकता।425 Too Earlyदोबारा भेजे जाने का ख़तरा है, इसलिए अभी काम नहीं किया गया।426 Upgrade Requiredआगे बढ़ने के लिए दूसरे प्रोटोकॉल पर जाना होगा।428 Precondition Requiredअनुरोध के साथ शर्त भेजनी होगी — इसी से ऊपर लिख जाने की दुर्घटना रुकती है।429 Too Many Requestsबहुत ज़्यादा अनुरोध भेजे गए; Retry-After बताता है कब दोबारा कोशिश करें।431 Request Header Fields Too Largeहेडर बहुत बड़े हैं — अक्सर जमा हुई कुकीज़ से।451 Unavailable For Legal Reasonsक़ानूनी कारणों से रोका गया; संख्या उपन्यास फ़ारेनहाइट 451 की ओर इशारा करती है।

5xx सर्वर त्रुटि11

समस्या सर्वर की ओर है; कुछ देर बाद फिर कोशिश करना अक्सर काम आता है।

500 Internal Server Errorसर्वर के भीतर कुछ बिगड़ा; अनुरोध में कोई ख़ामी नहीं थी।501 Not Implementedसर्वर ने वह क्षमता अभी बनाई नहीं है।502 Bad Gatewayगेटवे को पीछे के सर्वर से ग़लत उत्तर मिला।503 Service Unavailableसर्वर अभी अनुरोध नहीं ले सकता — रखरखाव या अधिक भार।504 Gateway Timeoutगेटवे पीछे के सर्वर की प्रतीक्षा करते-करते समय पार कर गया।505 HTTP Version Not Supportedवह HTTP संस्करण समर्थित नहीं है।506 Variant Also Negotiatesसर्वर सेटिंग की ग़लती से सामग्री-चयन अपने ही चक्कर में फँस जाता है।507 Insufficient Storageपूरा करने के लिए पर्याप्त जगह नहीं बची।508 Loop Detectedसर्वर ने काम करते समय अनंत लूप पकड़ा।510 Not Extendedअनुरोध को और विस्तार चाहिए।511 Network Authentication Requiredपहले नेटवर्क में लॉगिन करना होगा — सार्वजनिक वाई-फ़ाई पर आम।

हेडर

अनुरोध हेडर28

सर्वर को भेजते समय ब्राउज़र जो हेडर जोड़ता है।

Acceptबताता है कि क्लाइंट कौन-से प्रारूप स्वीकार करता है।Accept-Encodingबताता है कि क्लाइंट कौन-सा संपीड़न समझता है; gzip या br से आकार काफ़ी घटता है।Accept-Languageपसंदीदा भाषाएँ बताता है; बहुभाषी साइटें इसी से चुनती हैं।Authorizationपहचान साबित करने वाले क्रेडेंशियल — टोकन या उपयोगकर्ता नाम और पासवर्ड।Cookieसर्वर द्वारा पहले रखी कुकीज़ वापस भेजता है।Hostबताता है कि अनुरोध किस डोमेन के लिए है — इसी से एक सर्वर कई साइटें रख पाता है।If-Modified-Sinceसंसाधन तभी माँगता है जब वह उस समय के बाद बदला हो।If-None-Matchसंसाधन तभी माँगता है जब उसका ETag अलग हो — कैश ऐसे ही पुनः जाँचता है।Originअनुरोध का स्रोत बताता है; ब्राउज़र जोड़ता है और CORS इसी पर निर्णय लेता है।Rangeफ़ाइल का सिर्फ़ एक हिस्सा माँगता है — डाउनलोड फिर से शुरू करने और वीडियो सीक का आधार।Refererबताता है कि किस पन्ने से आए; वर्तनी की ग़लती मानक में ही रह गई।User-Agentब्राउज़र और डिवाइस बताता है; आजकल ये अधिकतर छद्म ही होते हैं।Sec-Fetch-Destबताता है कि अनुरोध किस काम का है — चित्र, स्क्रिप्ट या दस्तावेज़।Sec-Fetch-Modeबताता है कि अनुरोध समान-मूल है, CORS है या नेविगेशन।Sec-Fetch-Siteबताता है कि अनुरोध उसी साइट से आया या किसी और से।DNTट्रैक न करने का अनुरोध; बाध्यकारी नहीं है, इसलिए अक्सर अनदेखा होता है।Expectबड़ा मुख्य भाग भेजने से पहले सर्वर से पूछता है।Forwardedप्रॉक्सी से गुज़रे अनुरोध की मूल जानकारी रखता है।Fromअनुरोध भेजने वाले का ईमेल; क्रॉलर इसे संपर्क के रूप में देते हैं।If-Matchतभी आगे बढ़ें जब ETag मेल खाए — दूसरों का बदलाव मिटने से बचता है।If-Rangeफ़ाइल न बदली हो तो आगे से, वरना शुरू से।Max-Forwardsसीमित करता है कि अनुरोध कितने प्रॉक्सी से गुज़रे।Proxy-Authorizationप्रॉक्सी को दिए जाने वाले क्रेडेंशियल, मूल सर्वर को नहीं।TEबताता है कि कौन-सी ट्रांसफ़र एन्कोडिंग स्वीकार्य है।Upgrade-Insecure-Requestsसर्वर से कहता है कि http लिंक भी https कर दे।X-Forwarded-Forप्रॉक्सी के पार मूल क्लाइंट IP ले जाता है; मानक नहीं, पर हर जगह प्रचलित।X-Forwarded-Protoबताता है कि मूल अनुरोध http से आया या https से।X-Requested-Withजावास्क्रिप्ट से आए अनुरोध को चिह्नित करने की पुरानी परिपाटी।

प्रतिक्रिया हेडर30

उत्तर देते समय सर्वर जो हेडर जोड़ता है।

Access-Control-Allow-Originबताता है कि कौन-से मूल यह उत्तर पढ़ सकते हैं — CORS का केंद्र।Access-Control-Allow-Methodsक्रॉस-ऑरिजिन अनुरोधों के लिए अनुमत विधियाँ बताता है।Access-Control-Allow-Headersक्रॉस-ऑरिजिन अनुरोधों में अनुमत हेडर बताता है।Access-Control-Allow-Credentialsतय करता है कि क्रॉस-ऑरिजिन अनुरोध कुकीज़ ले जा सकें या नहीं।Access-Control-Max-Ageबताता है कि प्रीफ़्लाइट परिणाम कितनी देर कैश रहे।Ageयह उत्तर कैश में कितनी देर से पड़ा है।Allowबताता है कि पता कौन-सी विधियाँ स्वीकारता है; 405 के साथ आता है।Content-Dispositionतय करता है कि दिखे या डाउनलोड हो, और फ़ाइल नाम भी रखता है।Content-Security-Policyतय करता है कि स्क्रिप्ट और चित्र कहाँ से आ सकते हैं — XSS रोकने की बाड़।ETagइस संस्करण की छाप; सामग्री बदले तो टैग बदलता है और कैश भाँप लेता है।Expiresबताता है कि इस समय के बाद उत्तर बासी माना जाए।Last-Modifiedअंतिम बार कब बदला; सशर्त अनुरोध इसी से तुलना करते हैं।Locationअगला पता; रीडायरेक्ट और 201 के साथ आता है।Permissions-Policyतय करता है कि कैमरा, माइक और स्थान जैसे फ़ीचर कौन इस्तेमाल करे।Referrer-Policyतय करता है कि रेफ़रर की कितनी जानकारी भेजी जाए।Retry-Afterबताता है कब दोबारा कोशिश करें; 429 या 503 के साथ आता है।Serverसर्वर सॉफ़्टवेयर बताता है; ज़्यादा ब्योरा हमलावरों को संकेत देता है।Set-Cookieब्राउज़र में कुकी रखता है; HttpOnly और Secure लगाना सुरक्षित रहता है।Strict-Transport-Securityब्राउज़र से कहता है कि अब से यह साइट सिर्फ़ https पर खोले।Timing-Allow-Originतय करता है कि दूसरा मूल समय-मापन पढ़ सके या नहीं।Varyबताता है कि कौन-से हेडर उत्तर बदलते हैं; कैश इसी से बाँटता है।WWW-Authenticateबताता है कि किस विधि से प्रमाणीकरण हो; 401 के साथ आता है।X-Content-Type-Optionsब्राउज़र को घोषित प्रकार से अलग अनुमान लगाने से रोकता है।X-Frame-Optionsदूसरी साइटों को इस पन्ने को फ़्रेम में डालने से रोकता है।X-XSS-Protectionपुराने ब्राउज़र का XSS फ़िल्टर चालू करता था; अब CSP उसकी जगह है।Cross-Origin-Opener-Policyसंदर्भ को अलग करता है ताकि अन्य मूल खिड़की पर पकड़ न रखें।Cross-Origin-Resource-Policyतय करता है कि कौन-से मूल यह संसाधन ला सकते हैं।Cross-Origin-Embedder-Policyदूसरे मूल के संसाधनों से स्पष्ट अनुमति माँगता है।Content-Rangeबताता है कि भेजा गया टुकड़ा पूरे में कहाँ का है; 206 के साथ आता है।Accept-Rangesबताता है कि रेंज अनुरोध चलते हैं या नहीं; bytes का अर्थ है फिर से शुरू करना संभव।

दोनों दिशाओं में13

ऐसे हेडर जो दोनों ओर आ सकते हैं।

Cache-Controlतय करता है कि कितनी देर और कहाँ कैश हो — आधा प्रदर्शन यहीं तय होता है।Connectionबताता है कि कनेक्शन खुला रहे या नहीं; HTTP/2 में इसका उपयोग नहीं।Content-Encodingबताता है कि मुख्य भाग पर कौन-सा संपीड़न लगा है।Content-Languageबताता है कि मुख्य भाग किस भाषा में है।Content-Lengthबताता है कि मुख्य भाग कितने बाइट का है।Content-Typeमुख्य भाग का प्रकार और एन्कोडिंग बताता है; ग़लत हो तो चित्र अक्षरों में दिखता है।Dateसंदेश बनने का समय।Pragmaपुराना कैश हेडर; अब Cache-Control उसकी जगह है।Trailerबताता है कि मुख्य भाग के बाद कौन-से हेडर आएँगे।Transfer-Encodingबताता है कि मुख्य भाग कैसे टुकड़ों में भेजा जाता है; chunked में लंबाई पहले जानना ज़रूरी नहीं।Upgradeदूसरे प्रोटोकॉल पर जाने का प्रस्ताव; 101 के साथ जोड़ा बनाता है।Viaबताता है कि संदेश किन प्रॉक्सी से गुज़रा।Warningकैश या रूपांतरण की चेतावनी रखता था; अब प्रयोग में नहीं।

कैसे पढ़ें

  • स्थिति कोड का पहला अंक ही अर्थ तय करता है: 4 यानी अनुरोध, 5 यानी सर्वर।
  • 404 का अर्थ है "नहीं है"; 403 का "है, पर आपके लिए नहीं"। दोनों को गड्डमगड्ड करने से जाँच लंबी होती है।
  • हेडर नामों में अक्षर-भेद नहीं होता — Content-Type और content-type एक ही हैं।
  • कैश और CORS की दिक़्क़तें अक्सर एक हेडर पंक्ति पर टिकी होती हैं, जो नेटवर्क टैब में दिखती है।

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

Q. 404 और 403 में क्या फ़र्क़ है?

404 कहता है कि उस पते पर कुछ नहीं है; 403 कहता है कि है, पर आप देख नहीं सकते। कुछ सर्वर जानबूझकर 404 देते हैं ताकि संसाधन के होने का पता ही न चले।

Q. 500 आने पर मैं कुछ कर सकता हूँ?

5 से शुरू होने वाले कोड सर्वर की समस्या हैं, इसलिए आमतौर पर प्रतीक्षा ही रास्ता है। हालाँकि 502 और 504 दो सर्वरों के बीच की बात है और थोड़ी देर बाद दोबारा कोशिश करने पर अक्सर सुलझ जाती है।

Q. 301 और 302 में से क्या चुनें?

पता हमेशा के लिए बदला हो तो 301, अस्थायी हो तो 302। ध्यान रखें कि ब्राउज़र और खोज इंजन 301 को लंबे समय तक याद रखते हैं, जिससे उसे पलटना कठिन होता है।

Q. क्या हेडर नामों में अक्षर-भेद होता है?

नहीं। Content-Type और content-type एक ही हेडर हैं, और HTTP/2 से तो वे छोटे अक्षरों में ही भेजे जाते हैं।

Q. CORS त्रुटियाँ क्यों आती हैं?

जब कोई पन्ना दूसरे मूल का उत्तर पढ़ना चाहे और सर्वर ने Access-Control-Allow-Origin से अनुमति न दी हो, तो ब्राउज़र रोक देता है। सर्वर ने उत्तर तो भेजा — ब्राउज़र बस उसे आपके कोड तक नहीं पहुँचाता, इसलिए नेटवर्क टैब में दिखता है पर स्क्रिप्ट पढ़ नहीं पाती।