我阅读了 rfc7230 第 3.2 节。删除过时的规则后,关于 header 字段的规范是:
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
。
例如 for name:a<sp>b<sp>c
,field-name
会匹配name
, 但是field-content
会匹配a<sp>b
然后 next<sp>
不能被 another 匹配field-content
, 因此这个 header 是无效的。
但是,name:a<sp>bc<sp>d
是有效的,因为field-content
,a<sp>b
和有两个匹配项c<sp>d
。
我认为这是不一致的。这是故意的还是我误解了什么?