为什么会出现400个错误?节点,Express,ReactJS

时间:2019-05-06 19:51:48

标签: javascript node.js express http-status-code-400

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

  1. 查看express来查找是否有400个错误从那里来了,但没有成功。

  2. 浏览到反应代码,那里不会出现400个错误。

  3. 正在浏览chrome控制台...。但是它什么也没有。

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

我的节点版本为 10.15.3 ,但我所有其他微服务均为 10.13.0

为什么我的React / ExpressNextJS微服务会出现400个错误?

1 个答案:

答案 0 :(得分:0)

2018年11月,进行了PR,这是对最大标头大小的重大更改。标头的大小只能为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,这里是PR(https://github.com/nodejs/node/commit/92231a56d9

测试

要对此进行测试,可以将curl请求与超过8kb的巨大cookie一起使用,并且应该收到400错误。调整该最大值后,它应该可以工作。