C/C++中的HTTP解析库推荐

29

我正在寻找一个适用于C/C++的HTTP解析库。我已经查看了curl库,但它似乎是一个HTTP客户端库。我需要的是一个可以解析HTTP头部信息的库(例如获取查询字符串、获取cookie、获取请求URL、获取Post数据的方法)。

谢谢。


你是在编写一个Web服务器、插件或CGI程序吗?也就是说,你真的要接收原始的HTTP或“熟制”的标头吗? - CB Bailey
1
原始HTTP头。我需要传递从套接字读取并解析HTTP标头文件的内容。 - michael
“询问我们推荐或寻找工具、库或喜爱的离线资源的问题,因为它们往往会吸引有偏见的答案和垃圾邮件,所以在 Stack Overflow 上是不被允许的。” - abelenky
3个回答

15
大约6个月前,我正在寻找完全相同的东西。然后我发现了这个页面:HTTP Made Really Really Easy,然后我自己写了一个... 非常有效,实现起来非常简单...

13
简单来说,如果您不在意处理所有的边角情况,那就容易些。多行状态码、转义字符、国际化字符串等内容需要考虑。 - Ben Voigt
1
足够正确。对于我的使用来说并不重要... - dicroce
这条评论已经六年了。现在,我正在寻找适用于我的嵌入式系统的C语言http解析器。我的系统资源很紧张。@dicroce,你使用自己的http解析器的经验如何?我应该自己编写还是使用别人的? - abhiarora
2
我的经验非常好。我们仍在许多产品中使用那段代码。今天你有更多的选择...如果我今天还要做那个工作,我肯定会首先看看现在有什么可用的选项。 - dicroce

13

请看libebb,它使用简单但强大的PEG(基于Zed Shaw的Mongrel解析器)由Ragel生成了一个解析器。它是C语言的轻量级HTTP服务器库,通过提供套接字处理和请求解析为编写Web服务器打下了基础。通过实现RFC2612中提供的HTTP/1.1语法,libebb理解大多数有效的HTTP/1.1连接(包括持久连接、流水线请求和分块请求),并拒绝无效或恶意请求。libebb支持HTTPS。

还要检查一下这个快速解析器


3
HTTP解析器已经迁移到这里:https://github.com/joyent/http-parser。 - douyw
libebb源代码在这里-> https://github.com/taf2/libebb/ - ParokshaX
希望有一个快速高效的手写现场解析器来处理HTTP。 - Lothar
@Lothar不就是http-parser吗? - MuchToLearn
是的,http-parser就是我找到的。 - Lothar

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接