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