Ответ 1
Если вы используете Express 4.x, вы можете использовать метод req.get(headerName)
, как описано в Справочник по API Экспресс 4.x
Я хотел бы получить заголовок "Host" запроса, сделанного с помощью пакета Node JS connect library. Мой код выглядит так:
var app = connect()
.use(connect.logger('dev'))
.use(connect.static('public'))
.use(function(req, res){
var host = req.???
})
.listen(3000);
Документация для подключения находится здесь, но я не вижу ничего подробного описания API объекта req
в приведенном выше коде. http://www.senchalabs.org/connect/
Изменить. Обратите внимание, что успешный ответ должен указывать на документацию (мне нужно это, чтобы проверить, какая версия предоставила API, который я ищу).
Если вы используете Express 4.x, вы можете использовать метод req.get(headerName)
, как описано в Справочник по API Экспресс 4.x
Проверьте вывод console.log(req)
или console.log(req.headers);
чтобы узнать, что вы можете использовать в заголовке запроса:
console.log(JSON.stringify(req.headers));
и он вернет вам что-то вроде этого:
{
"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"
}
var host = req.headers['host'];
Заголовки хранятся в объекте JavaScript, а строки заголовков - как ключи объектов.
Аналогично, заголовок user-agent может быть получен с помощью
var userAgent = req.headers['user-agent'];
У меня есть простое решение из знаменитой книги Орейли; Веб-разработка с Node и Express: использование стека JavaScript в заголовке запроса. Маршрут макет, и вы можете использовать свой собственный маршрут приложения, но принцип тот же.
app.get('/mockREQHeaderReader', function(req, res){
res.set('Content-Type', 'text/plain');
var s = "";
for (var name in req.header) s += name + ': ' + req.header[name] + '\n';
req.send(s);
});