在使用 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