我阅读了rfc7230第3.2节。删除过时的规则后,有关标题字段的规范是:
header-field = field-name ":" OWS field-value OWS
field-name = token
field-value = *field-content
field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ]
field-vchar = VCHAR
VCHAR = %x21-7E; visible (printing) characters
我对field-content
的定义感到困惑。它似乎匹配1或2 VCHAR
s,中间有任意数量的空格,但在field-content
匹配后它将与其他空格不匹配。
例如,对于name:a<sp>b<sp>c
,field-name
将匹配name
,但field-content
将匹配a<sp>b
,然后下一个<sp>
不能与另一个field-content
匹配,因此此标头无效。
但是,name:a<sp>bc<sp>d
有效,因为field-content
,a<sp>b
和c<sp>d
有两个匹配。
我认为这是不一致的。这是故意还是我误解了什么?