Экспресс.js-как проверить, отправлены ли заголовки?
Я пишу библиотеку, которая может установить заголовки. Я хочу дать пользовательское сообщение об ошибке, если заголовки уже отправлены, а не просто позволить ему потерпеть неудачу с сообщением" Не удается установить заголовки после их отправки", заданным узлом.js. Итак, как проверить, отправлены ли заголовки?
3 ответов
EDIT: начиная с express 4.x, вам нужно использовать res.headersSent. Обратите внимание также, что вы можете использовать setTimeout перед проверкой, так как он не установлен в true сразу после вызова res.send(). источник
простой: класс ответа Connect предоставляет общедоступное свойство "headerSent".
res.headerSent
- логическое значение, указывающее, были ли заголовки уже отправлены клиенту.
из источника код:
/**
* Provide a public "header sent" flag
* until node does.
*
* @return {Boolean}
* @api public
*/
res.__defineGetter__('headerSent', function(){
return this._header;
});
https://github.com/senchalabs/connect/blob/master/lib/patch.js#L22
узел поддерживает res.headersSent
в эти дни, так что вы можете / должны использовать это. Это логическое значение только для чтения, указывающее, были ли заголовки уже отправлены.
if(res.headersSent) { ... }
см.http://nodejs.org/api/http.html#http_response_headerssent
Примечание: это предпочтительный способ сделать это, по сравнению со старым свойством Connect 'headerSent', которое упоминает Нико.
другие ответы указывают на любой узел.веб-сайты js или github, они связаны.
но я хотел получить подтверждение с сайта Expressjs, вот оно:
app.get('/', function (req, res) {
console.log(res.headersSent); // false
res.send('OK');
console.log(res.headersSent); // true
});