HTTP请求首行各组件最大字节数及C结构体字段长度咨询
HTTP请求行各字段的最大长度与C结构体定义
各字段长度说明
Method(请求方法):
HTTP规范未强制限制请求方法的长度,但主流服务器(如Apache、Nginx)为防范攻击,通常将其最大长度限制为8192字节(8KB)。若仅处理标准HTTP方法(如GET、POST、OPTIONS等),20字节足够,但为兼容自定义方法和通用服务器限制,建议按8KB上限预留空间(需多留1字节存储字符串终止符\0)。URL(请求URI):
HTTP规范同样未强制限制URI长度,但实际场景中浏览器和服务器均有各自限制:早期IE限制为2083字节,现代浏览器支持更长URI,但服务器端常见限制为4KB到8KB(Apache默认8KB,Nginx默认4KB)。兼顾兼容性与实际使用场景,建议按8KB上限预留空间(含终止符)。HTTP-Version(HTTP版本):
目前常用版本标识如HTTP/1.0、HTTP/1.1、HTTP/2、HTTP/3,最长标识仅8个字符(如HTTP/1.1)。即使考虑未来可能的新版本(如HTTP/3.0),预留16字节空间完全足够(含终止符)。
建议的C结构体定义
struct http_rq { char method[8193]; // 8KB + 1字节终止符 char url[8193]; // 8KB + 1字节终止符 char version[16]; // 预留空间兼容现有及未来版本 };
注:若你的场景明确仅处理标准HTTP方法和短URI,可适当缩小字段长度节省内存,比如
method[20]、url[4097],上述定义是兼顾兼容性与通用性的方案。
内容的提问来源于stack exchange,提问作者Magnus Enebakk
相关产品推荐
相关产品推荐

