符合HTTP协议的请求行及单条请求头最大合法长度是多少
HTTP请求行与请求头长度规范说明
协议官方规定
HTTP/1.1 核心规范没有强制设定全局统一的请求行、单条请求头最大合法长度,仅给出了最低兼容要求:
- 服务端必须支持处理长度不低于4000字节的请求行
- 服务端必须支持处理总大小不低于8192字节的全部请求头
单条请求头的长度没有强制的最低兼容要求,具体阈值可由服务端根据自身场景自定义。
主流服务端默认参考阈值
目前通用Web服务端的默认配置可以作为实现参考:
- 请求行最大长度:Nginx、Apache默认均为8KB,IIS默认16KB
- 单条请求头最大长度:Nginx默认4KB,Apache默认8KB,IIS默认16KB
- 全部请求头总大小:通用服务端默认范围在8KB~32KB之间
C语言服务端实现建议
面向公网的通用场景下,按以下阈值配置即可覆盖绝大多数正常请求,同时可以有效防范缓冲区溢出、慢速攻击等安全问题:
- 单条请求行最大长度设为
8192字节(8KB),超过该阈值直接返回414 URI Too Long错误 - 单条请求头最大长度设为
4096字节(4KB),超过该阈值直接返回400 Bad Request错误 - 所有请求头总大小不超过
16384字节(16KB),超过该阈值直接返回431 Request Header Fields Too Large错误
如果是内部业务专用的服务端,可以根据实际业务需求(比如需要携带超长自定义头的场景)灵活调整阈值。
内容的提问来源于stack exchange,提问作者user786
相关产品推荐
相关产品推荐

