HTTP определяет поле заголовка как:
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
Часть token
позже определяется как:
token = 1*tchar
tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*"
/ "+" / "-" / "." / "^" / "_" / "`" / "|" / "~"
/ DIGIT / ALPHA
; any VCHAR, except delimiters
Подразумевается, что имя заголовка должно быть как минимум1 байт, и значение может быть 0 или более символов.
HTTP / 2 использует ту же базовую модель данных.
https://tools.ietf.org/html/rfc7230#section-3.2.4