科技 · 实用指南
curl 错误 92:HTTP/2 流异常关闭?先保留重置码,再强制 HTTP/1.1
退出码 92 表示 HTTP/2 帧层或流错误,并不指向唯一原因。先保存具体重置、判断请求能否安全重试、隔离客户端/中间层/源站,再验证完整响应。

退出码 92 表示 HTTP/2 帧层或流错误,并不指向唯一原因。先保存具体重置、判断请求能否安全重试、隔离客户端/中间层/源站,再验证完整响应。
错误 92 是 HTTP/2 帧层流错误,附带的错误名称提供更多上下文。 流错误只影响一个流;连接错误影响整条 HTTP/2 连接。 HTTP/1.1 成功只能缩小范围,不能证明哪个节点故障。
固定一个可复现请求与精确错误
记录 curl -V、方法、URL、退出码、流编号与 PROTOCOL_ERROR、INTERNAL_ERROR 或 CANCEL 等名称。共享前删除授权头、Cookie、令牌和正文。
尽量使用只读端点或测试账户。浏览器成功并不能推翻 curl 失败,因为协商、头部、代理路径和连接复用可能不同。
重跑前先判断副作用
GET/HEAD 通常可重复,但仍要核对应用结果。POST、PUT、PATCH、DELETE 可能已在源站执行,应先查日志、幂等键、作业或事务状态。
RFC 9113 对 REFUSED_STREAM 和 GOAWAY 处理边界给出明确保证;普通 CANCEL 或 INTERNAL_ERROR 不是同一保证。
用脱敏追踪定位边界
先用 --verbose 获取协议上下文;当前 curl 可用 --trace-config ids,time,http/2,ssl 定向追踪。追踪可能包含敏感数据,只能私存并脱敏。
把客户端时间与代理、CDN、网关和源站日志对齐,确定重置来自哪一跳。错误 92 本身不标明责任机器。
只改变协议做对照
在相同 URL、载荷、凭据、代理和区域下分别显式测试 --http2 与 --http1.1。HTTP/1.1 成功只说明问题依赖 HTTP/2 路径。
不要同时改缓冲区、拆载荷、换网络和换协议。一次只改一个变量,并记录 curl 与 HTTP/2 库版本。
验证完整性后再限范围绕行
核对状态、响应头、字节数或摘要及应用结果。下载先写新临时文件,验证后再替换;API 正文必须完整解析。
只有安全请求、完整结果、明确范围与期限都满足时,才把 HTTP/1.1 作为临时缓解;副作用不明或边缘节点结果不一致时应停止。
