что произойдет, если ни res.send (), ни res.end () не будут вызваны в express.js? - PullRequest
0 голосов
/ 17 октября 2018

У меня проблема безопасности, когда кто-то пытается вызвать случайные 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() или res.end()?

1 Ответ

0 голосов
/ 17 октября 2018

Согласно документации res.end () .

Завершает процесс ответа.Этот метод на самом деле происходит от ядра Node, а именно от метода response.end () http.ServerResponse.

А затем response.end

Этот метод сообщает серверу, что все заголовки и тело ответа отправлены;этот сервер должен считать это сообщение завершенным.Метод response.end () ДОЛЖЕН вызываться при каждом ответе.


Если вы оставите свой запрос в подвешенном состоянии, httpserver обязательно сохранит данные о нем.Это означает, что если вы позволите зависать многим запросам, ваша память будет расти и снижать производительность вашего сервера.

О клиенте ему придется ждать, пока он не получит тайм-аут запроса.


Лучше всего при наличии неверного запроса является немедленное отклонение запроса, что освобождает память, разрешенную для запроса.

Вы не можете предотвратить ошибочные запросы (может быть, брандмауэр блокирует запросы с определенного IP-адреса?).Лучшее, что вы можете сделать, это справиться с ними как можно быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...