快递.js - 如何检查标头是否已发送
Express.js - How to check if headers have already been sent?
我正在编写一个可以设置标题的库。如果标头已经发送,我想给出一条自定义错误消息,而不是让它失败,并显示 Node.js 给出的"发送后无法设置标头"消息。那么如何检查标头是否已发送呢?
Node 现在支持res.headersSent
,所以你可以/应该使用它。它是一个只读布尔值,指示标头是否已发送。
if(res.headersSent) { ... }
请参阅 http://nodejs.org/api/http.html#http_response_headerssent
注意:与Niko提到的旧版Connect 'headerSent'属性相比,这是首选的方法。
编辑:从Express 4.x开始,您需要使用res.headersSent。另请注意,您可能希望在检查之前使用 setTimeout,因为它不会在调用 res.send() 后立即设置为 true。源
简单: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
其他答案指向Node.js或Github网站。
以下是来自Expressjs网站: https://expressjs.com/en/api.html#res.headersSent
app.get('/', function (req, res) {
console.log(res.headersSent); // false
res.send('OK');
console.log(res.headersSent); // true
});
相关文章:
- 主干-不管怎样,检查事件以前是否绑定过
- 如何让程序检查所选单词中是否有按键
- 用于检查数组中是否存在元素的javascript自定义方法
- 使用 jQuery 检查所有值是否为空或已填充
- 如何检查元素的内容是否为空,如果为空,请在jquery中删除该元素
- 使用map来检查是否为真'不起作用
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 使用onkeyup JS事件检查输入的值是否唯一
- JS数组-检查对象值是否重复
- PhantomJS - 检查javascript函数是否正在运行的任何方法
- 如何使用jQuery可编辑插件检查ajax是否成功完成
- 如何在AngularJS中有效地检查日期是否有效
- 如何检查数组中的对象是否等于选项值
- 检查是否存在使用chrome扩展的javascript库
- 当一些文本粘贴到文本框中时(没有设置超时),是否检查数字
- 如何检查是否检查了分区中的所有单选按钮
- 验证是否检查了1到3个复选框,但id不同
- JavaScript 的类型函数是否检查空值
- 如何知道angularjs中的控制器中是否检查了单选按钮
- 在垃圾收集期间是否检查持久收集