【发布时间】:2015-09-23 02:08:38
【问题描述】:
以下是最新 HTTP RFC 7230 中的 HTTP 消息定义
HTTP-message = start-line
*( header-field CRLF )
CRLF
[ message-body ]
下面是header-field的定义,
header-field = field-name ":" OWS field-value OWS
field-name = token
field-value = *( field-content / obs-fold )
field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]
field-vchar = VCHAR / obs-text
obs-fold = CRLF 1*( SP / HTAB )
..和:
obs-text = %x80-FF
..和ABNF's:
VCHAR = %x21-7E
; visible (printing) characters
我们可以看到,field-value 可以有多个 obs-folds,而 obs-folds 有一个 CRLF。这对我来说很奇怪,因为我认为 CRLF 是标题行的结尾。是否有将多个 CRLF 编码到一个标头字段中的示例?还是我误解了定义?
【问题讨论】:
-
您是否尝试过在每个 CRLF 之前添加一个空格?单独的空行表示 HTTP 标头的结束。
-
我不练习什么。我只是对标头字段的 ABNF 定义是否正确感到困惑。
-
因此,您要问的是 HTTP 的 RFC 中是否存在错误——这是地球上使用最广泛和审查最广泛的信息传输协议之一。
-
是的。但是,我不确定这是一个错误还是我的误解。
-
@appleleaf,stackoverflow.com/q/17463676/632951 的重复?
标签: http networking network-programming http-headers network-protocols