← 返回资讯

收到两份Retry-After,网关怎样保留原始字段并拒绝歧义

2026-10-24

收到两份Retry-After时,直接放进普通字典可能丢掉前一份;按逗号拆分又可能把合法HTTP日期拆坏。本文保留原始字段实例,用单值作为对照,对重复或无法解释的合并值采用保守隔离策略。该拒绝政策是本地合同,不冒充协议唯一恢复方法。

原始字段数组应早于便捷字典

附件把头保存成名称和值的二维数组,字段名比较忽略大小写,但每个实例和原值都保留。Retry-After为5的单字段得到五秒;一个完整HTTP日期得到十二秒。日期内部本来有一个逗号,仍然是一份字段值,不能因为看见逗号就认定它是数字列表。

固定UTC时刻只用于让单值对照可复算,本文的主问是字段歧义。运行器日期向量仅覆盖示例的IMF-fixdate形态,不是全部HTTP历史日期格式解析器。若实际HTTP库已把多个字段折叠成字符串,应尽可能在更早的原始头接口保留实例信息,不能指望末端再无损猜回原来有几行。

重复相同也不静默认作一份

两份5被标为ambiguous-field-count,两份2与8也同样隔离。即使等待数字相同,重复本身仍是需要调查的链路事实;本例不会选第一个、最后一个、最小值或最大值后继续发送。采用别的恢复政策可以,但必须显式记录依据和原始字段,不能让字典覆盖顺序代替决策。

单字段2, 8不是合法秒数,按invalid-single隔离;日期后面又追加逗号5也拒绝。若仅把字符串按逗号拆成几段,合法日期也会误报;若使用宽松日期库忽略尾部字符,又可能把坏值当成成功解析。附件先检查完整形态,确保整段值都被消费,而不是仅解析看起来有效的前缀。

协议事实与恢复选择分别留痕

RFC 9110定义Retry-After的单值语法,通用字段合并也受字段是否为列表等条件限制。本文不发明“逗号总表示多个等待值”的规则。审计结果至少包含原始数组、识别出的实例数、解释状态和是否允许策略继续;未知或重复字段不要替换成零秒,那会把歧义变成即时重发。

本次实际执行六个合成向量:两项单值有效、两项重复字段隔离、两项合并值无效。没有向真实上游请求429,也没有验证任何网关HTTP库的原始头接口。适配时可先用受控假响应观察库是否保留多实例,再把同一数组交给策略检查。保留收到的证据,比在错误已经被覆盖后反复调等待秒数更容易定位代理或服务端的异常。

配套样本与复核入口

下载本篇独立合成输入和实验运行器。上述文件放在同一目录后运行 python run_lab.py C002。完整运行需要全部四十四份输入及相关配置。结果中的method区分离线计算、静态参考检查与回环实测,不能把前两者当成真实网关已通过。

资料核对日期:2026-10-24。官方依据1。

与本站相关基础教程的区别:旧文已给单值秒数/日期解析;新题专门核原始重复字段及逗号歧义,HTTP语法与本地拒绝政策分开。

加微信,把这一页发到你手机上

扫码加站长企业微信,会自动把这一页的链接发给你。模型接入、token 计费上有问题,也可以直接问。

去留微信

不想自己搭网关、自己维护渠道?

力达云是托管的 OpenAI / Anthropic 双格式端点,一期提供 DeepSeek,注册送 ¥5 额度。

去试用

这个页面有问题?

提交时会附带当前页面地址和浏览器信息,帮助我们定位问题。不填联系方式即为匿名。