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.