स्वीकृत और सामग्री-प्रकार HTTP हेडर के बीच अंतर


118

इसलिए Acceptहेडर सर्वर को उस ब्राउज़र के MIME- प्रकार को बताता है जिसे ब्राउज़र खोज रहा है। उदाहरण के लिए, सर्वर सादा पाठ, HTML, JSON, आदि भेज सकता है।

ठीक है, यह समझ में आता है, लेकिन जब मैं Content-Typeहेडर को देखता हूं और ऐसा ही लगता है। उदाहरण के लिए, यह सर्वर को बताता है कि वह टेक्स्ट या JSON चाहता है।

Acceptऔर Content-TypeHTTP हेडर के बीच अंतर क्या है ?

जवाबों:


155

जैसा कि आप ठीक से ध्यान दें, सर्वर द्वारा यह बताने के लिए HTTP क्लाइंट द्वारा एक्सेप्ट हेडर का उपयोग किया जाता है कि वे किस प्रकार की सामग्री स्वीकार करेंगे। सर्वर फिर एक प्रतिक्रिया भेजेगा, जिसमें एक कंटेंट-टाइप हेडर शामिल होगा जो क्लाइंट को यह बताएगा कि वास्तव में दिए गए कंटेंट का कंटेंट टाइप क्या है।

हालाँकि, जैसा कि आपने देखा होगा, HTTP अनुरोध में कंटेंट-टाइप हेडर भी हो सकते हैं । क्यों? खैर, POST या PUT अनुरोधों के बारे में सोचें । उन अनुरोध प्रकारों के साथ, क्लाइंट वास्तव में अनुरोध के हिस्से के रूप में सर्वर को डेटा का एक गुच्छा भेज रहा है, और सामग्री-प्रकार हेडर सर्वर को बताता है कि डेटा वास्तव में क्या है (और इस प्रकार यह निर्धारित करता है कि सर्वर इसे कैसे पार्स करेगा)।

विशेष रूप से, HTML फ़ॉर्म सबमिशन के परिणामस्वरूप होने वाले POST अनुरोध के लिए, सामग्री का प्रकार (सामान्य रूप से) नीचे दिए गए मानक फ़ॉर्म सामग्री प्रकारों में से एक होगा, जैसा enctypeकि <form>टैग पर विशेषता द्वारा निर्दिष्ट किया गया है :

  • application/x-www-form-urlencoded (डिफ़ॉल्ट, पुराना, सरल, कम मात्रा में सरल ASCII पाठ के लिए थोड़ा उपरिव्यय, कोई फ़ाइल अपलोड समर्थन नहीं)
  • multipart/form-data (नया, फ़ाइल अपलोड के लिए समर्थन जोड़ता है, बाइनरी डेटा या गैर-एएससीआईआई पाठ की बड़ी मात्रा के लिए अधिक कुशल)

22
  • स्वीकार करें : ब्राउज़र को पचाने में सक्षम है, उदाहरण के लिए, सभी भाषाओं को कोई भी समझ सकता है।
  • सामग्री-प्रकार : वास्तविक डेटा किस प्रारूप में है, उदाहरण के लिए कोई व्यक्ति किस भाषा में बोल रहा है। चूंकि कंप्यूटर (अच्छी तरह से, अब वे कर सकते हैं) अन्य प्रकारों को पहचान सकते हैं जैसे लोग कह सकते हैं "ओह, वह जर्मन है!" या "वह चीनी बोल रहा है!"

1
जरूरी नहीं कि कोई ब्राउजर हो, लेकिन http क्लाइंट हो।
जिम अहो

20

स्वीकार जैसा है

यहाँ मेरा अनुरोध है और मैं इस प्रतिक्रिया प्रारूप को (स्वीकार करना) चाहूंगा

सामग्री-प्रकार की तरह है

यहाँ मेरा अनुरोध (या प्रतिक्रिया) है और यह (सामग्री-प्रकार) मेरे अनुरोध (या प्रतिक्रिया) में मेरे द्वारा भेजे जा रहे सामग्री का प्रारूप है


मुझे पता है कि मुझे यहां देर हो रही है लेकिन मैं उत्सुक हूं, अगर सर्वर द्वारा प्रतिक्रिया "स्वीकार" प्रारूप में नहीं भेजा जाता है तो क्या होगा?
चीख

1
यह क्लाइंट के ऊपर होगा @shriek तय करने के लिए। मुझे लगता है कि अधिकांश http क्लाइंट (या ब्राउज़र) "बुद्धिमानी से" वास्तविक डेटा को देखेंगे और देखेंगे कि यह वास्तव में क्या है। हो सकता है कि एक ग्राहक प्रतिक्रिया को भी अस्वीकार कर सकता है यदि इसे JSON माना जाता है, लेकिन पार्सिंग विफल हो जाता है क्योंकि यह कुछ और प्रतीत होता है।
जिम अहो

5

यह एक अनुरोध-प्रतिक्रिया वार्तालाप है, इसलिए क्लाइंट

  • "सामग्री-प्रकार" का अनुरोध भेजता है और
  • मीडिया प्रकार "स्वीकार" की प्रतिक्रिया प्राप्त करने की अपेक्षा करता है।

गलत। स्वीकार एक अनुरोध हैडर है। स्वीकृत उत्तर देखें।
23

2
@ डार्रोन नहीं, यह उत्तर सही है। वह यह नहीं कह रहा है कि यह अनुरोध हैडर नहीं है, वह कह रहा है कि इसका उद्देश्य सर्वर को यह बताना है कि वह किस तरह की प्रतिक्रिया की उम्मीद करता है। अन्य उत्तरों के साथ निरर्थक की तरह, लेकिन मुझे लगता है कि यह सबसे संक्षिप्त है। +1।
टॉड मेनियर

0

स्वीकार करना

HTTP शीर्ष लेख अनुरोध को स्वीकार करता है कि MIME प्रकार के रूप में व्यक्त की जाने वाली सामग्री किस प्रकार की है, ग्राहक समझने में सक्षम है। सामग्री बातचीत का उपयोग करते हुए, सर्वर तब प्रस्तावों में से एक का चयन करता है, इसका उपयोग करता है और सामग्री-प्रकार प्रतिक्रिया शीर्षक के साथ अपनी पसंद के ग्राहक को सूचित करता है। ब्राउजर इस हेडर के लिए पर्याप्त मान सेट करते हैं, जहां संदर्भ किया जाता है, इस संदर्भ के आधार पर: जब सीएसएस स्टाइलशीट लाते हैं तो अनुरोध के लिए एक अलग मूल्य निर्धारित किया जाता है जब किसी छवि, वीडियो या स्क्रिप्ट को लाते हैं।

( स्रोत: developer.mozilla.org )

सामग्री प्रकार

सामग्री के प्रकार-प्रकार के हेडर का उपयोग मीडिया प्रकार के संसाधन को दर्शाने के लिए किया जाता है।

प्रतिक्रियाओं में, एक सामग्री-प्रकार हेडर क्लाइंट को बताता है कि वास्तव में दी गई सामग्री का सामग्री प्रकार क्या है। ब्राउजर कुछ मामलों में MIME सूँघने का काम करेगा और इस हेडर के मूल्य का पालन नहीं करेगा; इस व्यवहार को रोकने के लिए, हेडर X-Content-Type-Options को nosniff पर सेट किया जा सकता है।

अनुरोधों में, (जैसे कि POST या PUT), क्लाइंट सर्वर को बताता है कि वास्तव में किस प्रकार का डेटा भेजा गया है।

( स्रोत: developer.mozilla.org )

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