NodeJS connect kullanarak bir istekten istek http üstbilgileri nasıl ayıklanır


265

Node JS'nin bağlantı kitaplığı paketini kullanarak yapılan bir isteğin "Ana Bilgisayar" başlığını almak istiyorum. Kodum şöyle görünüyor:

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

    var host = req.???

  })
 .listen(3000);

Bağlanmak için belgeler burada, ancak reqyukarıdaki kodda nesnenin API'sini detaylandıran bir şey görmüyorum . http://www.senchalabs.org/connect/

Düzenleme : Başarılı bir yanıtın belgelere işaret etmesi gerektiğini unutmayın (Aradığım API'nin hangi sürümü sağladığını doğrulamak için buna ihtiyacım var).

Yanıtlar:



199

HTTP istek başlıklarının bir listesini görmek için şunları kullanabilirsiniz:

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

JSON biçiminde bir liste döndürmek için.

{
"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
Bunu yukarıdaki kabul edilen cevaptan daha yararlı buldum. JSON.stringify tüm farkı yaratır.
Patrick

1
Tamamen ilgili bir notta şunları da yapabilirsiniz: require('util').inspect(req.headers, {depth: null}Düğüm REPL'inde alacağınız eşdeğeri istiyorsanız. Her iki şekilde de bir dize w / sonunda.
mikermcneil

4
req.headersResmi Express belgelerine neden dahil edilmiyor ? expressjs.com/en/api.html#req
user1063287

1
Burada bariz olarak headerValue = req.headers['headerName'];
belirtmek

1
Sadece türetilmemiş özellikleri belgelemektedirler. Yukarıda belirtilen Express belgelerinde bir not vardır: "req nesnesi, Düğümün kendi istek nesnesinin geliştirilmiş bir sürümüdür ve tüm yerleşik alanları ve yöntemleri destekler ." temel alınan nesnenin Düğüm belgelerine işaret eden bir bağlantı içerir.
Serge N

141

Çıktısını kontrol console.log(req)veyaconsole.log(req.headers);


11
Req.headers hakkında nasıl bilgi edindiniz? Bu alan hangi versiyonda mevcut?
Alex Spurling

11
@AlexSpurling nodejs.org/api/http.html#http_request_headers . Connect, yalnızca Düğüm'ün HTTP modülünden türleri genişletir - http.ServerRequestve http.ServerResponse. Düğümün belgelerinde bulunan özellikler veya olaylar Connect'te (ve ayrıca genişletme yoluyla Express) kullanılabilir olmalıdır.
Jonathan Lonowski

1
Bu daha mantıklı. Yine, bu bilgiyi nerede bulacağınızı bilmek iyi olurdu (req türünün aslında http.ServerRequest olduğunu). Belgeler bunu açıkça ortaya koyuyor gibi görünmüyor.
Alex Spurling

1
Talep türü http.IncomingMessage
Anatoliy


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

Üstbilgiler, JavaScript dizesinde, üstbilgi dizeleri nesne anahtarları olarak saklanır.

Benzer şekilde, kullanıcı-aracı başlığı şu şekilde elde edilebilir:

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

3
NOT: adlandırılan dizin değeri FreakING !! duyarlı
Steve

9
@Steve yorumuna göre büyük / küçük harfe duyarlı olduğu için tüm başlıklar alt kasalıdır. Bu nedenle "Origin" (başlığın 'O') üstbilgisini ayarlıyorsanız, istek üstbilgileri koleksiyonundaki tek öğe "o" küçük harfiyle "orijin" olur.
soymak
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.