NodeJS कनेक्ट का उपयोग करके अनुरोध हेडर कैसे निकालें


265

मैं नोड जेएस की कनेक्ट लाइब्रेरी बंडल का उपयोग करके किए गए अनुरोध के "होस्ट" हेडर प्राप्त करना चाहता हूं। मेरा कोड ऐसा दिखता है:

var app = connect()
  .use(connect.logger('dev'))
  .use(connect.static('public'))
  .use(function(req, res){

    var host = req.???

  })
 .listen(3000);

कनेक्ट के लिए प्रलेखन यहाँ है, लेकिन मुझे reqउपरोक्त कोड में ऑब्जेक्ट के एपीआई का विवरण देने वाला कुछ भी नहीं दिखाई दे रहा है । http://www.senchalabs.org/connect/

संपादित करें : ध्यान दें कि एक सफल उत्तर को दस्तावेज़ को इंगित करना चाहिए (मुझे यह सत्यापित करने की आवश्यकता है कि मैं कौन सा संस्करण एपीआई प्रदान कर रहा हूं)।

जवाबों:


333

यदि आप एक्सप्रेस 4.x का उपयोग करते हैं, तो आप एक्सप्रेस 4.x एपीआई संदर्भreq.get(headerName) में वर्णित विधि का उपयोग कर सकते हैं


177
इसके अलावा बेहतर नाम वाले लोगों के साथ किया गया req.header(headerName)
ZachB

6
इस तरह की बुनियादी कार्यक्षमता के लिए एक्सप्रेस में लाने की आवश्यकता नहीं है। इसके बजाय NodeJS में मूल रूप से नीचे बताए अनुसार उपयोग करें। nodejs.org/en/docs/guides/anatomy-of-an-http-transaction
CodeFinity

198

HTTP अनुरोध हेडर की सूची देखने के लिए, आप उपयोग कर सकते हैं:

console.log(JSON.stringify(req.headers));

JSON प्रारूप में एक सूची वापस करने के लिए।

{
"host":"localhost:8081",
"connection":"keep-alive",
"cache-control":"max-age=0",
"accept":"text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
"upgrade-insecure-requests":"1",
"user-agent":"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.107 Safari/537.36",
"accept-encoding":"gzip, deflate, sdch",
"accept-language":"en-US,en;q=0.8,et;q=0.6"
}

2
मुझे यह उपर्युक्त उत्तर की तुलना में अधिक उपयोगी लगा। JSON.stringify सभी अंतर बनाता है।
पैट्रिक

1
पूरी तरह से- संबंधित नोट पर, आप यह भी कर सकते हैं: require('util').inspect(req.headers, {depth: null}यदि आप चाहते हैं कि आपको एनओडी आरईपीएल में जो मिला है, उसके बराबर हो। किसी भी तरह से आप डब्ल्यू / एक स्ट्रिंग को समाप्त करते हैं।
mikermcneil

4
req.headersआधिकारिक एक्सप्रेस प्रलेखन में शामिल क्यों नहीं है ? expressjs.com/en/api.html#req
user1063287

प्रतिक्रिया के हेडर ऑब्जेक्ट (सिंबल ऑब्जेक्ट) के लिए काम नहीं करता है - res.headers।
कोडबीट

1
यहाँ स्पष्ट बताते हुए:headerValue = req.headers['headerName'];
asokan

141

के उत्पादन की जाँच करें console.log(req)याconsole.log(req.headers);


11
आपको req.headers के बारे में कैसे पता चला? यह फ़ील्ड किस संस्करण में उपलब्ध है?
एलेक्स स्पर्लिंग

11
@AlexSpurling nodejs.org/api/http.html#http_request_headers । कनेक्ट बस नोड्स के HTTP मॉड्यूल से प्रकार का विस्तार करता है - http.ServerRequestऔर http.ServerResponse। नोड के प्रलेखन में पाए जाने वाले गुण या घटनाएँ कनेक्ट के साथ भी उपलब्ध होनी चाहिए (और, आगे विस्तार से, एक्सप्रेस)।
जोनाथन लोनोव्स्की

1
यह अधिक समझ में आता है। फिर, यह जानना अच्छा होगा कि वह जानकारी कहां से मिल सकती है (कि वास्तव में req का प्रकार http.ServerRequest है)। यह स्पष्ट करने के लिए दस्तावेज़ प्रकट नहीं होता है।
एलेक्स स्परलिंग

1
Req का प्रकार http.IncomingMessage
Anatoliy

यह जानकारी http अनुरोध का अनुकरण करती है और यह आपके लिए उपयोगी हो सकती है: gist.github.com/3879071
Anatoliy

56
var host = req.headers['host']; 

हेडर एक जावास्क्रिप्ट ऑब्जेक्ट में स्टोर किए जाते हैं, हेडर स्ट्रिंग्स के साथ ऑब्जेक्ट कुंजी के रूप में।

इसी तरह, उपयोगकर्ता-एजेंट हेडर के साथ प्राप्त किया जा सकता है

var userAgent = req.headers['user-agent']; 

3
नोट: नामित सूचकांक मूल्य फ्रीकिंग है !! केस सेंसिटिव
स्टीव

9
@ संवेदनशील टिप्पणी के अनुसार यह मामला संवेदनशील होने के कारण सभी शीर्ष लेख निम्न-आवरण वाले हैं। इसलिए यदि आप हेडर "ओरिजिनल" (कैपिटल 'ओ') सेट कर रहे हैं तो रिक्वेस्ट हेडर्स कलेक्शन में एकमात्र तत्व "ओरिजनल" होगा जिसमें लोअरकेस 'ओ' होगा।
लूटने
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.