为什么我会收到 400 错误?节点、Express、ReactJS

Why am I getting 400 errors? Node, Express, ReactJS

最近,我从我的 reactJS 服务 url 收到了 400 个错误,但我没有在我的其他微服务上收到它们。这是我尝试过的:

  1. 正在调查 express 以查明 400 错误是否来自那里,但没有成功。

  2. 深入研究 React 代码,应该不会出现 400 错误。

  3. 查看 chrome 控制台....但它什么也没有。

  4. 我的服务器上什至看起来都没有收到任何日志,所以好像它从未命中,所以那里没有日志。

我的节点版本是 10.15.3 但我所有其他微服务都是 10.13.0

为什么我的 react/express NextJS 微服务出现 400 错误?

2018 年 11 月发布的 PR 是对最大 header 大小的重大更改。 Headers 大小只能是 8kb。

受影响的节点版本是 v6.15.0、v8.14.0、v10.14.0、v11.3.0(参见 https://www.nearform.com/blog/protecting-node-js-from-uncontrolled-resource-consumption-headers-attacks/

你可以做以下两件事之一...

  1. 减少到 v10.13.0

  2. 添加标志--max-http-header-size=10000

背景

为了避免 DoS 攻击,最大大小从 80kb 减少到 8kb。如果您的网站上有很多 cookie,您将收到 400 错误,而没有太多输出。在此处阅读有关 PR 和讨论的更多信息:https://github.com/nodejs/node/issues/24692 and here is the PR (https://github.com/nodejs/node/commit/92231a56d9)

测试

要对此进行测试,您可以使用带有超过 8kb 的巨大 cookie 的 curl 请求,您应该会收到 400 错误。调整此最大值后,它应该可以工作。