如何在 Express.js 中设置超时

阅读时长 4 min read

在使用 Express.js 构建 Web 应用程序时,有时会面临需要设置超时的情况。超时是指在预定的时间内不完成某项操作,就取消该操作并返回错误信息。设置超时可以预防请求阻塞和资源浪费,提高应用程序的可靠性和响应速度。

在本文中,我们将介绍如何在 Express.js 中设置超时,包括应用程序级超时、路由级超时、防范 DoS 攻击等。希望本文可以为您提供深入学习和指导意义。

应用程序级超时

应用程序级超时是指在整个应用程序的生命周期内设置的超时时间。在 Express.js 中,可以通过 server.timeout 属性来设置应用程序级超时时间。默认情况下,超时时间为 2 分钟。

-- -------------------- ---- -------
----- ------- - -------------------
----- --- - ----------

-- ------------ - --
------------------ -------

---------------- -- -- -
  ---------------- -- --------- -- ---- --------
---

在上面的例子中,我们将超时时间设置为 1 分钟。如果某个请求处理时间超过 1 分钟,就会自动终止该请求并返回超时错误。

路由级超时

路由级超时是指在某个特定路由上设置的超时时间。在 Express.js 中,可以使用 express.Router 对象来创建路由器,然后使用 router.timeout 属性来设置该路由器的超时时间。

-- -------------------- ---- -------
----- ------- - -------------------
----- ------ - -----------------

-- ---------- -- -
-------------- - ------

-- -- --- ------ --
-------------------- ----- ---- -- -
  -- ---
---

-- ------------
--------------- --------

在上面的例子中,我们将超时时间设置为 30 秒。如果某个请求处理时间超过 30 秒,在该路由器上的所有请求都会自动终止并返回超时错误。

防范 DoS 攻击

除了设置超时之外,还可以采取其他措施防范 DoS(拒绝服务)攻击。DoS 攻击是一种常见的网络安全攻击,攻击者会发送大量的请求来占用服务器的资源,从而导致网络崩溃或服务不可用。

以下是一些防范 DoS 攻击的最佳实践:

限制请求大小

可以使用 express.json 中间件来限制请求体的大小,从而避免出现过大的请求体导致服务器资源被消耗殆尽。默认情况下,请求体大小限制为 100 kB。

-- -------------------- ---- -------
----- ------- - -------------------
----- --- - ----------

-- -------- -- --
---------------------- ------ ------ ----

---------------- -- -- -
  ---------------- -- --------- -- ---- --------
---

使用限流器

可以使用限流器来限制每个 IP 地址的请求数和速率。限流器可以帮助识别和阻止 DoS 攻击,并降低服务器负载。在 Express.js 中,可以使用 express-rate-limit 中间件来实现限流。

-- -------------------- ---- -------
----- ------- - -------------------
----- --------- - ------------------------------
----- --- - ----------

-- ---- -- --------- -- ---
----- ------- - -----------
  --------- -- - ----- -- - ------
  ---- -- -- ----- ---- -- -- -- -------- --- ------
---

-----------------

---------------- -- -- -
  ---------------- -- --------- -- ---- --------
---

在上面的例子中,我们使用 express-rate-limit 中间件来创建一个限流器,限制每个 IP 地址每分钟最多发送 10 个请求。如果某个 IP 地址发送的请求数超过限制,将会得到 429 Too Many Requests 错误。

结语

在本文中,我们介绍了如何在 Express.js 中设置超时,包括应用程序级超时、路由级超时、防范 DoS 攻击等。希望本文可以帮助您更好地理解 Express.js 的运作机制,并提高应用程序的安全性和可靠性。

Source: FunTeaLearn,Please indicate the source for reprints https://funteas.com/post/67809b95ce7f4861254293ae

Feed
back