我正在直接从数据包中解析HTTP数据(无论是TCP重构还是非重构,您可以假设它是重构的)。
我正在寻找尽可能准确地解析HTTP的最佳方法。
主要问题在于HTTP头部。
查看基本 HTTP / 1.1的RFC,似乎HTTP头部解析会很复杂。 RFC为头部的不同部分描述了非常复杂的正则表达式。
我应该编写这些正则表达式来解析HTTP头部的不同部分吗?
到目前为止,我已经编写了用于通用HTTP头部的基本解析:
message-header = field-name ":" [ field-value ]
我已经包含了在第4.2节中描述的用SP
替换内部LWS
和使用逗号分隔值重复具有相同field-name
的标头。
然而,查看第14.9节会发现为了解析field-value
的不同部分,我需要一个更复杂的解析方案。
如果我想要给解析器用户HTTP的全部功能并解析HTTP的每个部分,你建议我如何处理HTTP解析的复杂部分(特别是field-value
)?
对此的设计建议也将不胜感激。
谢谢。