乐趣区

关于http-2:query-params过大引发的failed-to-load-response

概述

http2 web server 在 query params 过大时,服务端会返回错误码 ENHANCE_YOUR_CALM。因为 chrome 浏览器在 version: 86.0.4240.111 中的调试窗口没有显示具体的错误码。定位起来没那么间接。

定位过程

  • 有反馈在大量勾选指标时, 执行指令失败. inspect 如图:

  • 无业务日志. 在业务容器抓包, 申请没到业务容器.
  • 查看 access.log, 包体达到了 tengne.
  • 在客户端抓包. 如图:


能够看到, GOAWAY 后, 服务端断开了链接. 具体谬误如下:

查阅 rfc7540

The endpoint detected that its peer is
exhibiting a behavior that might be generating excessive load.

既然是 query param 过大引发的服务器断开链接, 从 nginx 中的文档找到了可能的参数:
http2_max_field_size
改为 16k 后问题解决.

其它

切换到 http1.1 有相似的谬误
http 414

退出移动版