什么被视为HTTP标头中的空白

时间:2018-05-04 16:43:27

标签: http whitespace standards

我刚刚阅读了HTTP标准(支持的标准更准确)第1部分,并且在第3部分,第2部分到最后一段中与他们认为是“空白”的内容相混淆: https://tools.ietf.org/html/rfc7230#section-3

由于返回(CRLF)终止HTTP标头,因此可能隐含的唯一空格是0x20'空格'字符。维基百科列出了另一种空白ASCII符号,如“非破坏空间”0xA0,所以我仍然不理解这个(“空白”)概念。

请帮助我弄清楚它在本标准范围内的真正含义。

2 个答案:

答案 0 :(得分:5)

您链接到的RFC 7230完全定义了它认为标题中的空格:

HTTP-message   = start-line
                 *( header-field CRLF )
                 CRLF
                 [ message-body ]

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 )
               ; obsolete line folding
               ; see Section 3.2.4

obs-text       = %x80-FF

OWS            = *( SP / HTAB )
               ; optional whitespace

如您所见,SP(空格)和HTAB(水平制表符)是唯一定义的空白字符。它们在RFC 5234 Appendix B.1中定义,RFC 7230链接到:{/ p>

HTAB           =  %x09
               ; horizontal tab

SP             =  %x20

答案 1 :(得分:1)

1)另见https://tools.ietf.org/html/rfc7230#section-3.2.3

2)HTAB也是空白。

3)在第3节的上下文中,"发送者不得在起始行和第一个头字段之间发送空格。"也指额外的换行符。