如果在express.js中未调用res.send()和res.end()怎么办?

时间:2018-10-17 08:30:27

标签: node.js express

我遇到一个安全问题,有人试图调用服务器上不支持的随机API,但通常它们通常用于管理员API。我将下面的代码设置为处理404,以不响应此攻击

  

url-not-found-handler.js

'use strict';
module.exports = function () {
  //4XX - URLs not found
  return ((req, res, next) => {
  });
};

客户端发生的事情是等待服务器响应,但是我想知道这是否会影响express.js服务器的性能,以及没有res.send()或{{ 1}}?

1 个答案:

答案 0 :(得分:3)

根据res.end()的文档。

  

结束响应过程。这个方法实际上来自Node核心,   尤其是http.ServerResponse的response.end()方法。

然后是response.end

  

此方法向服务器发送所有响应标头和   尸体已经寄出;该服务器应考虑此消息   完成。必须在每个响应上调用方法response.end()。


如果您保留请求挂起,httpserver肯定会保留有关它的数据。这意味着,如果让许多请求挂起,内存将增加并降低服务器性能。

关于客户,他将不得不等到请求超时。


遇到不好的请求最好的办法是立即拒绝该请求,这将释放请求所允许的内存。

您无法阻止错误的请求(可能是防火墙阻止了来自某些IP地址的请求?)。最好的办法是尽快处理它们。