我正在创建一个简单的 HTTP 服务器,它需要理解 HTTP 请求,
但是像 chromium 这样的浏览器使用 HTTP Pipelining 技术,这意味着可以在单个连接中发送多个 HTTP 请求。
现在我发现很难区分多个 HTTP 请求之间的界限,一个明显的例子是一个 GET 请求加上一个随机数据的表单上传。
我现在想到的是将收到的所有数据拆分\r\n
,然后检查每一行,看看它是否看起来像一个 HTTP 请求,例如^(GET|PUT|HEAD|POST|MOVE|TRACE) /[^ ]+ HTTP/[0-9]+\.[0-9]+$
但这仍然可能是错误的,有什么想法吗?(请不要告诉我使用现有的 HTTP 服务器库......我正在练习一些东西)