迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 网络 >

NodeJS & HTTP 错误码 431 Request Header Fields

作者:迹忆客 最近更新:2022/06/17 浏览次数:

我最近发现来自 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

当然,我们也不应将此值设置得太高,而应针对自己的特定应用程序将其配置的值尽可能的低。

上一篇:Nginx 运行但是不提供站点服务

下一篇:没有了

除非注明转载,本站文章均为原创或翻译,欢迎转载,转载请以链接形式注明出处

本文地址:

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

热门文章

教程更新

热门标签

扫码一下
查看教程更方便