पूरा यूआरएल कहीं भी संग्रहीत नहीं है जिसे आप प्राप्त कर सकते हैं। आपको इसे भागों से खुद को बनाने की जरूरत है:
const url = request.connection.info.protocol + '://' + request.info.host + request.url.path
;
भले ही यह कट्टरपंथी प्रतीत हो सकता है, लेकिन अगर आप इसके बारे में सोचते हैं तो यह समझ में आता है क्योंकि कोई मूल, अनपेक्षित, असम्बद्ध URL नहीं है। HTTP अनुरोध है कि तार के ऊपर जाता है URL नहीं है के रूप में उदाहरण के लिए ब्राउज़र पता पट्टी में टाइप:
GET /hello?a=1&b=2 HTTP/1.1 // request.url.path
Host: localhost:4000 // request.info.host
Connection: keep-alive
Accept-Encoding: gzip, deflate, sdch
...
और आप केवल पता चलेगा कि HAPI सर्वर कनेक्शन टीएलएस मोड में है या नहीं के आधार पर प्रोटोकॉल (request.connection.info.protocol
)। यदि आप इसे
हालात
के बारे में पता होना करने के लिए या तो:
request.connection.info.uri
या request.server.info.uri
सूचना दी होस्ट नाम वास्तविक मशीन के होस्ट नाम है कि सर्वर पर चल रहा है हो जाएगा (* निक्स पर hostname
का आउटपुट)। आप वास्तविक होस्ट चाहते हैं व्यक्ति ब्राउज़र में लिखा जाता है (भिन्न हो सकता है) आप request.info.host
जाँच करने के लिए जो HTTP अनुरोध के होस्ट हैडर से पार्स किया गया है की जरूरत है)
प्रॉक्सी पर जाएं और X-Forwarded-आद्य हैडर
यदि आपका अनुरोध प्रॉक्सी (ies)/लोड बैलेंसर्स/एचटीटीपीएस टर्मिनेटर के माध्यम से पारित हो गया है, तो संभव है कि कहीं भी एचटीटीपीएस यातायात समाप्त हो गया हो और HTTP सर्वर पर आपके सर्वर पर भेजा गया हो, इस मामले में आप मूल्य का उपयोग करना चाहेंगे x-forwarded-proto
शीर्षलेख यदि यह वहां है:
const url = (request.headers['x-forwarded-proto'] || request.connection.info.protocol) + '://' + request.info.host + request.url.path
;
टेम्पलेट तार के साथ:
const url = `${request.headers['x-forwarded-proto'] || request.connection.info.protocol}://${request.info.host}${request.url.path}`;
स्रोत
2015-08-05 19:55:58
मूल URL और कच्चे HTTP अनुरोध के बारे में अच्छी बात। – gilly3
'request.connection.info.protocol' इतना अच्छा समाधान नहीं है। यदि आपको प्रोटोकॉल को बेहतर तरीके से 'request.headers [' x-forwarded-proto '] ' – Petroff
@Petroff धन्यवाद का उपयोग करने की आवश्यकता है, तो प्रॉक्सी के बारे में एक नोट के साथ मेरा उत्तर अपडेट किया गया। –