Каков формат значений заголовка HTTP 1.1?
Я прочитал раздел 3.2 rfc7230. После удаления устаревших правил, спецификация поля заголовка выглядит так:
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
,
Я думаю, что это противоречиво. Это предназначено или я что-то неправильно понял?
1 ответ
Я знаю, что это старый вопрос, но:
Обновленный раздел 5.5 RFC 9110 по-прежнему содержит эту двусмысленность. Поэтому я бы предложил придерживаться описанного здесь объяснения .