【发布时间】:2020-08-08 20:24:41
【问题描述】:
我正在尝试使用 NestJs 开发 API。当作为 HTTP 标头传递的不记名令牌太长(大约 2400 个字符)时,我收到 Http 错误代码 431。但它在不记名令牌大约 1200 个字符时有效。我们可以做任何设置来增加标题大小限制吗?我正在使用 nodejs12
【问题讨论】:
我正在尝试使用 NestJs 开发 API。当作为 HTTP 标头传递的不记名令牌太长(大约 2400 个字符)时,我收到 Http 错误代码 431。但它在不记名令牌大约 1200 个字符时有效。我们可以做任何设置来增加标题大小限制吗?我正在使用 nodejs12
【问题讨论】:
HTTP 431 Request Header Fields Too Large 响应状态码表示服务器拒绝处理请求,因为请求的 HTTP 标头过长。请求头缩小后可以重新提交请求。
431 可以在total size的请求头太大,或者单个头字段太大的时候使用。为了帮助那些遇到此错误的人,请在响应正文中指出两者中的哪一个是问题——理想情况下,还包括哪些标头太大。这让用户可以尝试解决问题,例如清除他们的 cookie。
如果出现以下情况,服务器通常会产生此状态:
以下解决方案并非特定于nest.js,而是适用于任何node.js 服务器。
在运行 node --help 时,您会看到以下标志之一:
...
--max-http-header-size=... set the maximum size of HTTP headers (default: 8KB)
...
这个 Node.js CLI 标志可以提供帮助:
--max-http-header-size=16384
它将 HTTP 最大标头大小设置为 16KB。
您可以将此标志设置为您想要的值。
参考this。
文档说明了此标志的最大大小,因此请注意这一点。
【讨论】: