ट्रम्पेट के साथ एक स्ट्रीम को बदलें, http.Response में सामग्री-लंबाई शीर्षलेख कैसे प्राप्त करें?

मेरे पास एक nodejs http सर्वर चल रहा है और मैं विशिष्ट साइटों (जैसे मेरा निजी विज्ञापन-अवरोधक) पर सामग्री को बदलना चाहता हूं। मैंने इसे तुरही के साथ करने का निर्णय लिया। अब समस्या यह है कि जब ट्रम्पेट नई सामग्री इंजेक्ट करता है और इसे http Response (http.IncomingMessage) पर पाइप करता है, तो शीर्षलेख ['सामग्री-लंबाई'] मान अब मान्य नहीं है।

कुछ ब्राउज़रों को परवाह नहीं है (W7 पर क्रोम/फ़ायरफ़ॉक्स), अन्य तुरंत क्रैश (आईपैड पर सफारी)। मैंने समान परिणाम (सफारी हमेशा के लिए प्रतीक्षा) के साथ सामग्री-लंबाई शीर्षलेख को मिटाने का प्रयास किया।

सामग्रियों को स्विच करने के बाद, मैं सही प्रतिक्रिया की सामग्री-लंबाई कैसे सेट कर सकता हूं? मैंने हार्मन पाया, लेकिन मुझे बस इस आखिरी बिट की आवश्यकता है, इसलिए हार्मन बहुत अधिक ओवरहेड की तरह महसूस किया। या यह छोटा नहीं है?

1

1 उत्तर

यदि आप नहीं जानते कि जब आप हेडर (यहां मामला) भेजते हैं तो आपकी प्रतिक्रिया कितनी बड़ी होगी, आपको खंडित स्थानांतरण एन्कोडिंग

यदि आप कोई सामग्री-लंबाई निर्दिष्ट नहीं करते हैं तो नोड को खंडित स्थानांतरण एन्कोडिंग के लिए डिफ़ॉल्ट होना चाहिए। या तो कोड को हटाएं जो सामग्री-लंबाई शीर्षलेख सेट कर रहा है या res.removeHeader ('सामग्री-लंबाई') को आज़माएं।

1
जोड़ा
ट्रम्पेट की स्ट्रीम अपने end ईवेंट को फायर कर रही थी? अगर प्रतिक्रिया वास्तव में खराब हो गई और ठीक से पूरा हो गया, तो आपको लंबे समय तक लोड नहीं दिखना चाहिए।
जोड़ा लेखक josh3736, स्रोत
संपत्ति <कोड> सामग्री-लंबाई की परवाह किए बिना, नोडज वास्तव में प्रतिक्रियाओं को तोड़ रहा है। संपत्ति को मिटाने से आईपैड पर सफारी पर लंबे समय तक लोडिंग का समय होता है (उदाहरण के लिए), जैसा प्रारंभिक प्रश्न में बताया गया है। मेरे पास आखिरी दृष्टिकोण था: जब भी प्रतिक्रिया में सामग्री होती है, मैं स्विच करना चाहता हूं, मैं प्रतिक्रिया को बफर करता हूं, बाइटों को गिनता हूं, सामग्री-लंबाई निर्धारित करता हूं और फिर अनुरोध प्रतिक्रिया पर लिखता हूं। यह डाउनसाइड के साथ काम कर रहा है, कि अनुरोध अब खंडित नहीं हुआ है (परिणामस्वरूप उपयोगकर्ता के लिए सामग्री का समय तक प्रतीक्षा समय)। क्या उस नकारात्मक
जोड़ा लेखक atripes, स्रोत