超大请求应在哪一层拦住:怎样证明代理拒绝时上游零调用
超大请求收到拒绝页面,还不能证明请求体没有被转发。要验收入口大小限制,必须同时核对字节长度、准入决定和上游接收计数。本文以十字节为合成阈值测试前后一字节,当前执行的是参考准入器,没有运行真实代理。
用编码后的字节定义边界
附件的三个请求体分别是一个“中”字加六、七、八个英文字母。UTF-8编码后是九、十、十一字节,字符数却不是这些数字。参考契约允许小于等于十,拒绝十一,所以允许向量是真、真、假,上游计数为二。改用中文长文本时,只比较字符数很容易低估实际请求体。
测试应以实际发送的编码结果为准,包括JSON标点、字段名和转义开销。压缩上传还需要分别定义传输体与解压体的限制;一个很小的压缩包可能展开为很大的内存对象。本文没有构造压缩负载,也不把十字节阈值推荐给生产,只用它使每一个边界都能手工复核。
未知长度上传要明确先缓冲还是边读边转
Content-Length已知时,可以在读取前做初步拒绝,但不能完全相信声明值。分块或未知长度上传需要累计读入字节并在超限时停止。若同时边读边向上游转发,那么超限被发现之前,上游可能已经收到一部分,不能再宣称“拒绝时零调用”。
附件选择先完整接收受限大小、再决定是否调用的参考策略,因此拒绝样本零发送。代价是入口需要有界缓冲,并处理读到限额后一字节的终止逻辑。生产若使用临时文件,也要给文件数量、目录空间和清理设置预算,不能把内存问题简单迁移成磁盘耗尽。
对真实代理补齐双端证据
Nginx的请求体大小限制应查核心模块的client_max_body_size,转发是否提前开始还涉及请求缓冲配置。安全复现可以让本地echo上游只计数,不执行任何业务;每次清零后发送一个边界样本,保存代理状态、响应和echo计数。只统计最终成功调用,会漏掉已经转发一半又断开的尝试。
本批没有Nginx运行证据,二次允许和一次拒绝是离线参考结果。完整集成应额外覆盖相邻location是否继承了不同限制、未知长度请求、客户端中途取消以及错误页是否被重写。大小限制解决服务端入口资源准入,不负责裁剪提示词或判断模型上下文。将协议层字节检查与模型业务校验分开,才能知道一个请求到底在哪一层被拦住,以及那之前有没有发生上游活动。
配套样本与复核入口
下载本篇独立合成输入和实验运行器。上述文件放在同一目录后运行 python run_lab.py C018。完整运行需要全部四十四份输入及相关配置。结果中的method区分离线计算、静态参考检查与回环实测,不能把前两者当成真实网关已通过。
资料核对日期:2026-10-24。官方依据1;官方依据2;官方依据3。
与本站相关基础教程的区别:旧文给出安全加固总清单;本文以本地上游计数验证请求体限额的边界,既不讲提示词裁剪,也不按错误码排查。
不想自己搭网关、自己维护渠道?
力达云是托管的 OpenAI / Anthropic 双格式端点,一期提供 DeepSeek,注册送 ¥5 额度。