2012-04-15 14 views
10

मैं कैसे की उदाहरण के लिए सामग्री की लंबाई की गणना कर सकते हैं:गणना सामग्री की लंबाई पोस्ट

POST /Upload/ HTTP/1.1 
Host: test.lan 
User-Agent: Shockwave Flash 
Connection: Keep-Alive 
Cache-Control: no-cache 
Accept: text/* 
Content-Length: ????? 
Content-Type: multipart/form-data; boundary=----------------------------4d2179e6b3c0 

------------------------------4d2179e6b3c0 
Content-Disposition: form-data; name="Filename" 

phpinfo.php 
------------------------------4d2179e6b3c0 
Content-Disposition: form-data; name="ASPSESSID" 

6e223eb1c7561e9c599f03cc04e9444b 
------------------------------4d2179e6b3c0 
Content-Disposition: form-data; name="Filedata"; filename="phpinfo.php" 
Content-Type: application/octet-stream 

<? phpinfo(); ?> 
------------------------------4d2179e6b3c0 
Content-Disposition: form-data; name="Upload" 

Submit Query 
------------------------------4d2179e6b3c0-- 

उत्तर

16

Content-Length मूल्य सभी डेटा के बाद संदेश हेडर की समाप्ति कुल द्वारा गणना की जानी चाहिए। अपने सीमा सीमांकक सहित - - गिनती की जानी चाहिए

... 
Content-Length: ?????\r\n 
Content-Type: multipart/form-data; boundary=--------------------4d2179e6b3c0\r\n 
\r\n 

सब कुछ पहले खाली पंक्ति (\r\n) के बाद आने वाले: अपने उदाहरण के मामले में, यह सब कुछ इस बिंदु के बाद (साथ CRLF पात्रों पठनीयता के लिए शामिल है) है कुल लंबाई में। अभ्यास में, इसका आमतौर पर मतलब है कि पूर्ण संदेश इकाई निकाय उत्पन्न करने के बाद आपको Content-Length शीर्षलेख मान को सारणीबद्ध करने की आवश्यकता होगी। एक बार आपके पास संदेश का पूरा निकाय हो जाने पर आप पूर्ण HTTP संदेश बनाने के लिए इसे अपने शीर्षकों के साथ प्रीपेड कर सकते हैं।

HTTP spec के अनुसार आप तकनीकी रूप से Content-Length हेडर निर्दिष्ट करने के लिए आवश्यक नहीं हैं। RFC 2616 14.13 से:

अनुप्रयोगों को संदेश-शरीर की स्थानांतरण-लंबाई को इंगित करने के लिए इस क्षेत्र का उपयोग करना चाहिए, जब तक कि यह धारा 4.4 में नियमों से प्रतिबंधित न हो।

बहरहाल, यह सबसे सर्वर जो आम तौर पर वापस भेज देंगे एक त्रुटि प्रतिक्रिया करता है, तो Content-Length गुम है या गलत निर्दिष्ट के लिए एक सुंदर मानक आवश्यकता है।

+0

हां, HTTP के अनुसार यह अनिवार्य आवश्यकता नहीं है लेकिन कुछ सीजीआई कार्यान्वयन के लिए सभी पोस्ट लेनदेन में सामग्री-लंबाई की आवश्यकता होती है। – ViFI

संबंधित मुद्दे