Express.js – 如何检查头是否已经发送?
我正在写一个可能会设置标题的库。 如果头已经发送,我想给自定义的错误信息,而不是让它失败,由Node.js.发出的“无法设置标头后发送”消息。 那么如何检查头文件是否已经发送?
简单:Connect的Response类提供了一个公共属性“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
注意:与Niko提到的较旧的Connect'headerSent'属性相比,这是执行此操作的首选方式。