2012-10-09 36 views
5

HTTP 1.1 कहता है: क्या टोमकैट मेजबान शीर्षलेख के बिना HTTP 1.1 अनुरोध स्वीकार कर सकता है?

"एक ग्राहक चाहिए सभी HTTP/1.1 अनुरोध संदेशों में एक होस्ट शीर्ष लेख क्षेत्र में शामिल हैं" हालांकि, मशीन मैं पर काम कर रहा हूँ इस सटीक पोस्ट (निर्देशांक युक्त) है, जो मैं नहीं बाहर भेजने बदलने के लिए उपयोग कर सकते है:

POST /touch HTTP/1.1 
Content-type: application/x-www-form-urlencoded 
Content-Length: <n> 

x=<int x>&y=<int y> 

बिलाव 7 तुरंत एक होस्ट हेडर फ़ील्ड की कमी के कारण 400 Bad Request साथ प्रतिक्रिया करता है, और पोस्ट कभी नहीं मेरी सर्वलेट को हो जाता है। क्या कोई तरीका है कि मैं इस त्रुटि प्रतिक्रिया से बच सकता हूं और इन पुरानी मशीनों का समर्थन करने के लिए सर्वलेट के साथ POST को संभाल सकता हूं?

उत्तर

4

आप पहले से ही बताया गया है, HTTP 1.1 spec says (बोल्ड मेरा):

एक ग्राहक सभी HTTP/1.1 अनुरोध संदेशों में एक होस्ट हैडर क्षेत्र अवश्य शामिल करें। [...] एक HTTP/1.1 प्रॉक्सी को यह सुनिश्चित करना होगा कि किसी भी अनुरोध संदेश में आगे एक उचित होस्ट हेडर फ़ील्ड है जो प्रॉक्सी द्वारा अनुरोध की जाने वाली सेवा की पहचान करता है। सभी इंटरनेट आधारित HTTP/1.1 सर्वर जो एक होस्ट हेडर फ़ील्ड का अभाव किसी HTTP/1.1 अनुरोध संदेश के लिए एक 400 (ख़राब अनुरोध) स्थिति कोड के साथ जवाब चाहिए।

क्लाइंट HTTP 1.1 प्रोटोकॉल का गलत उपयोग कर रहा है, तो आपको सर्वर के किनारे उस पर काम करने की कोशिश नहीं करनी चाहिए। आप क्या कर सकते हैं कुछ कस्टम HTTP प्रॉक्सी सेट करें जो केवल Host शीर्षलेख जोड़ देगा। लेकिन यह एक गंदे कामकाज है। वैकल्पिक रूप से प्रोटोकॉल को 1.0 पर डाउनग्रेड करें।

यह भी ध्यान रखें कि भले ही आप किसी भी तरह बनाने के लिए प्रबंधन बिलाव इस तरह के अनुरोधों को स्वीकार (जो विनिर्देश के खिलाफ है), तो आप अभी भी कुछ समस्याएं आ रही हूँ, यदि कोई हो HTTP प्रॉक्सी सिरों के बीच है।

+0

यह बहुत मध्यवर्ती प्रॉक्सी भी कोई समस्या नहीं काम पर एक परीक्षण उपकरण के लिए है। मैं नहीं बल्कि काम किसी तरह का बिल्ला में चारों ओर, एक फिल्टर या एक वाल्व की तरह, होगा बल्कि एक प्रॉक्सी की स्थापना से है, लेकिन मुझे नहीं लगता कि इससे पहले कि यह इनकार किया है वाल्व अनुरोध को रोक सकता है। – user1684196