gpt4 book ai didi

http - 解析 http 请求 "line by line"或 "char by char"?

转载 作者:可可西里 更新时间:2023-11-01 16:31:06 25 4
gpt4 key购买 nike

我正在实现一个仅在 C 中处理 GET/POST/HEAD 的 Web 服务器。我想知道稳健地解析传入的 http 请求的一般策略是什么?

我应该逐个字符还是逐行

  • 一个字符一个字符的方法似乎效率低下,因为我需要大量代码来跟踪状态,例如,当您看到“G”时,检查下一个是否是“E”然后是“T”...

  • 逐行方法似乎不够稳健。例如,客户端发送了一个不完整的请求,例如缺少“\r\n”。另一个例子是请求可以是不同的顺序 HTTP/1.1 GET/index.html 而不是 GET/index.html HTTP/1.1

最佳答案

首先,HTTP/1.1 GET/index.html 格式不正确 - 函数名称(例如 GET)必须放在第一位。正如 WTP 所建议的,在这种情况下我会返回“400 Bad Request”。

至于遗失\r\n:想想如果这种情况合法发生,你会怎么做;例如,如果客户端开始发送数据,但没有完成发送。
在这种情况下,通常的行为是等待用户完成发送 HTTP 请求,但保持超时,这样恶意或故障客户端就不会导致您的服务器宕机。
如果请求没有及时完成,则丢弃整个请求,并返回“408 Request Timeout”。

一旦解决了该问题,您最好进行逐行解析。

关于http - 解析 http 请求 "line by line"或 "char by char"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7462655/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com