নোডজেএস সংযোগ ব্যবহার করে একটি অনুরোধ থেকে কীভাবে অনুরোধ HTTP শিরোনামগুলি নিষ্কাশন করবেন


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/

সম্পাদনা : দ্রষ্টব্য একটি সফল উত্তর অবশ্যই ডকুমেন্টেশনের দিকে নির্দেশ করবে (আমি যে APIটি খুঁজছি তা সরবরাহ করে কোন সংস্করণটি যাচাই করতে আমার এটি দরকার)।

উত্তর:


333

আপনি যদি এক্সপ্রেস 4.x ব্যবহার করেন তবে req.get(headerName)আপনি এক্সপ্রেস 4.x এপিআই রেফারেন্সে বর্ণিত পদ্ধতিটি ব্যবহার করতে পারেন


177
আরও ভাল-নাম দেওয়া হয়েছে req.header(headerName)
ZachB

6
এর মতো প্রাথমিক কার্যকারিতার জন্য এক্সপ্রেস আনার দরকার নেই। পরিবর্তে নীচে উল্লিখিত হিসাবে NodeJS এ নেটিভ ব্যবহার করুন। nodejs.org/en/docs/guides/anatomy-of-an-http- Transferences
কোডফিনিটি

198

এইচটিটিপি অনুরোধ শিরোনামগুলির একটি তালিকা দেখতে, আপনি ব্যবহার করতে পারেন:

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}আপনি নোড REPL- এ যা পেতে চান তার সমতুল্য চাইলে। যেভাবেই আপনি ডাব্লু / একটি স্ট্রিং শেষ করেন।
মিকর্ম্কনিল

4
req.headersঅফিসিয়াল এক্সপ্রেস ডকুমেন্টেশনে কেন অন্তর্ভুক্ত নেই? expressjs.com/en/api.html#req
ব্যবহারকারী 1063287

একটি প্রতিক্রিয়া - res.headers এর শিরোনাম বস্তুর (সিম্বল অবজেক্ট) জন্য কাজ করে না।
কোডবিট

1
এখানে সুস্পষ্ট উল্লেখ করে:headerValue = req.headers['headerName'];
1919

141

আউটপুট চেক করুন console.log(req)বাconsole.log(req.headers);


11
আপনি কীভাবে রেকএইচডার্স সম্পর্কে সন্ধান করলেন? এই ক্ষেত্রটি কোন সংস্করণে উপলব্ধ?
অ্যালেক্স স্পার্লিং

11
@AlexSpurling nodejs.org/api/http.html#http_request_headers । সংযোগ কেবল নোডের এইচটিটিপি মডিউল থেকে প্রকারগুলি প্রসারিত করে - http.ServerRequestএবং http.ServerResponse। নোডের ডকুমেন্টেশনে থাকা সম্পত্তি বা ইভেন্টগুলি কানেক্টের (এবং আরও এক্সটেনশন দ্বারা, এক্সপ্রেস) পাওয়া উচিত।
জোনাথন লোনভস্কি

1
এটি আরও অর্থবোধ করে। আবার, সেই তথ্যটি কোথায় পাওয়া যাবে তা জানা ভাল হবে (যেটুকু টাইপের প্রকৃতপক্ষে http.ServerRequest)। ডকুমেন্টেশন এটি পরিষ্কার করার জন্য উপস্থিত হয় না।
অ্যালেক্স স্পার্লিং

1
রেকের ধরণটি হ'ল http.IncomingMessage
আনাতোলি


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

শিরোনামগুলি জাভাস্ক্রিপ্ট অবজেক্টে সংরক্ষণ করা হয়, শিরোনামের স্ট্রিংগুলি অবজেক্ট কী হিসাবে।

তেমনি, ব্যবহারকারী-এজেন্ট শিরোলেখ প্রাপ্ত হতে পারে

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

3
দ্রষ্টব্য: নামকরণের সূচকের মান হ'ল ফ্রিকিং !! কেস সংবেদনশীল
স্টিভ

9
@ স্টিভ মন্তব্য অনুসারে এটি সংবেদনশীল হওয়ার বিষয়ে সমস্ত শিরোনাম লোয়ার-কেসড। সুতরাং আপনি যদি শিরোনামটি "অরিজিন" (মূলধন 'ও') সেট করে থাকেন তবে অনুরোধ শিরোনাম সংগ্রহের একমাত্র উপাদানটি ছোট হাতের 'ও' দিয়ে "উত্স" হবে।
ছিনতাই
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.