NodeJS & HTTP 错误码 431 Request Header Fields
我最近发现来自 Node JS 微服务的错误响应带有 HTTP 错误“431 Request Header Fields Too Large”,但起初它似乎是间歇性的,取决于所使用的测试环境。 进一步的调查发现它是最大标头大小的 Node 设置以及 Node JS 版本更改和一些大型 cookie。
Error 431 Request Header Fields Too Large HTTP 错误表示请求标头(包括 cookie)的总大小太大,Web 服务器无法接受。这通常发生在大型 cookie 已建立最大化请求大小的情况下。
在 2018 年,Node(版本 11.6.0)进行了更新,以解决该领域的一个安全漏洞 — 带有大型 HTTP 标头的拒绝服务 (CVE-2018–12121),这导致默认的最大请求标头大小减少到 8kb(从16kb),有趣的是选择了 8kb,因为它是当时 NGINX 的默认值。默认限制最终在 v13.13.0 中增加到 16kb,这意味着如果大家碰巧在 11.6 和 13.13 之间的 Node 版本上运行,那么大家就会面临 8kb 的限制,但在这些版本之前或之后不会有 8kb的限制,而会有 16kb 的限制——这是我最近碰到的情况。
如果大家的 node 安装的默认最大标头大小对自己不适用的话,那么可以使用 -max-http-header-size
参数配置新值,这是很容易的。
--max-http-header-size=16250
当然,我们也不应将此值设置得太高,而应针对自己的特定应用程序将其配置的值尽可能的低。
相关文章
Node.js 中的 HTTP 发送 POST 请求
发布时间:2023/03/27 浏览次数:187 分类:Node.js
-
在本文中,我们将学习如何使用 Node.js 使用第三方包发出发送 post 请求。
Node.js 与 React JS 的比较
发布时间:2023/03/27 浏览次数:134 分类:Node.js
-
本文比较和对比了两种编程语言,Node.js 和 React。React 和 Node.js 都是开源 JavaScript 库的示例。 这些库用于构建用户界面和服务器端应用程序。