Chrome देव उपकरण नेटवर्क टैब में देखे गए "अनुरोध पेलोड" बनाम "फ़ॉर्म डेटा" के बीच क्या अंतर है


244

मेरे पास एक पुराना वेब एप्लिकेशन है जिसका मुझे समर्थन करना है (जो मैंने नहीं लिखा था)।

जब मैं एक फॉर्म भरता हूं और सबमिट करता हूं तो क्रोम में "नेटवर्क" टैब की जांच करें मुझे "अनुरोध पेलोड" दिखाई देता है जहां मैं सामान्य रूप से "फॉर्म" देखूंगा। दोनों के बीच क्या अंतर है और एक दूसरे के बजाय कब भेजा जाएगा?

इससे गुगली हुई, लेकिन वास्तव में इसे समझाने वाली कोई जानकारी नहीं मिली (केवल "अनुरोध पेलोड" के बजाय "फॉर्म डेटा" भेजने के लिए जावास्क्रिप्ट एप्लिकेशन प्राप्त करने की कोशिश कर रहे लोग।


के संभावित डुप्लिकेट stackoverflow.com/questions/10494574
lefloh


2
अभी भी दोनों के बीच अंतर क्या है नहीं मिलता है। क्या "अनुरोध पेलोड" केवल एक अनुरोध है जो एक प्रकार से एन्कोड नहीं किया गया था?
red888

जवाबों:


274

अनुरोध पेलोड - या अधिक सटीक होना: एक HTTP अनुरोध का पेलोड बॉडी - सामान्यतया POST या PUT Request द्वारा भेजा जाने वाला डेटा है । यह हेडर और बाद हिस्सा है CRLFएक के HTTP अनुरोध

के साथ एक अनुरोध Content-Type: application/jsonकुछ ऐसा दिखाई देगा:

POST /some-path HTTP/1.1
Content-Type: application/json

{ "foo" : "bar", "name" : "John" }

यदि आप इसे प्रति AJAX जमा करते हैं तो ब्राउज़र आपको दिखाता है कि यह पेलोड बॉडी के रूप में क्या प्रस्तुत कर रहा है। यह सब वह कर सकता है क्योंकि यह पता नहीं है कि डेटा कहां से आ रहा है।

आप के साथ एक एचटीएमएल-प्रपत्र सबमिट करते हैं method="POST"और Content-Type: application/x-www-form-urlencodedया Content-Type: multipart/form-dataआपके अनुरोध कुछ ऐसा दिखाई देगा:

POST /some-path HTTP/1.1
Content-Type: application/x-www-form-urlencoded

foo=bar&name=John

इस मामले में फॉर्म-डेटा अनुरोध पेलोड है। यहां ब्राउज़र अधिक जानता है: यह जानता है कि बार सबमिट किए गए फॉर्म के इनपुट-फील्ड फू का मूल्य है। और यही आपको दिखा रहा है।

तो, वे अलग-अलग होते हैं Content-Typeलेकिन डेटा जमा करने के तरीके में नहीं। दोनों ही मामलों में डेटा मैसेज-बॉडी में है। और Chrome यह बताता है कि डेवलपर टूल में डेटा आपके लिए कैसे प्रस्तुत किया गया है।


3
क्या आकार आदि के मामले में एक के बाद एक को पसंद करने का कारण है .. विशेष रूप से हल्के AJAX कॉल के लिए?
उपयोगकर्ता

@ बफ़र क्षमा करें, मैं आपके प्रश्न को नहीं समझता।
lefloh

3
यदि मैं AJAX कॉल भेज रहा हूं, तो मैं jsonया तो सामग्री-प्रकार सेट कर सकता हूं या कर सकता हूं x-www-form-urlencoded। पूर्व डेटा को अनुरोध पेलोड के रूप में भेजता है जबकि बाद वाला इसे url क्वेरी के रूप में एन्कोड करता है। दोनों ठीक काम करने लगते हैं। क्या उनमें से एक को पसंद करने का कोई कारण है? मैं ट्विटर, गूगल, फेसबुक, स्टैकओवरफ्लो सेट सामग्री प्रकार जैसी अधिकांश वेबसाइटें देखता हूं x-www-form-urlencoded। कोई खास वजह?
यूजर

2
यह वास्तव में ओपी से संबंधित नहीं है लेकिन शायद यह उत्तर मदद करता है
lefloh

13

Chrome में, 'सामग्री-प्रकार: एप्लिकेशन / json' के साथ अनुरोध PayedLoad के रूप में दिखाता है और डेटा को json ऑब्जेक्ट के रूप में भेजता है।

लेकिन 'सामग्री-प्रकार: एप्लिकेशन / x-www-form-urlencoded' के साथ अनुरोध फ़ॉर्म डेटा दिखाता है और कुंजी: मान जोड़ी के रूप में डेटा भेजता है , इसलिए यदि आपके पास एक कुंजी में ऑब्जेक्ट की सरणी है तो यह कुंजी के मूल्य को फ्लैट्स करता है:

{ Id: 1, 
name:'john', 
phones:[{title:'home',number:111111,...},
        {title:'office',number:22222,...}]
}

भेजता है

{ Id: 1, 
name:'john', 
phones:[object object]
phones:[object object]
}

PHP बेशक बुराई है। आवेदन / x-www-form-urlencoded की लोकप्रियता PHP की लोकप्रियता से परिभाषित होती है।
ब्रायन हक

4
डाउनवोट किया गया क्योंकि "जोंस ऑब्जेक्ट" जैसी कोई चीज नहीं है। जोसन डेटा भेजा जाता है उसे एक सादे स्ट्रिंग के रूप में भेजा जाता है क्योंकि json अनिवार्य रूप से एक स्ट्रिंग है। आप बेशक इसे json_encode के साथ एक मानक "ऑब्जेक्ट" में बदल सकते हैं, लेकिन यह इसे "json ऑब्जेक्ट" भी नहीं बनाता है।
Volkan Ulukut

ठीक है, मुझे लगता है कि जावास्क्रिप्ट जावास्क्रिप्ट टेम्पलेट वस्तु या सिर्फ जावास्क्रिप्ट वस्तु बेहतर है
मोहम्मदरेज़ा

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