Заголовок HTTP - о разделителе

avatar
wangjun
8 апреля 2018 в 06:24
1380
1
0

Недавно я читал кое-что о формате заголовка HTTP, кажется, я нашел какое-то правило по этому поводу, но не могу его подтвердить.

например:

Some-Header:Foo;x=foo_attr,Bar;y=bar_attr\r\n

Foo и Bar — элементы списка Some-Header, x — атрибут Foo, y — атрибут Bar, верно? Если это правильно, "," должно быть разделителем элементов заголовка, а ";" должен быть разделителем атрибутов элемента заголовка.

Источник

Ответы (1)

avatar
Evert
8 апреля 2018 в 21:32
2

К сожалению, способ анализа заголовка HTTP зависит от заголовка. Вы не можете смотреть на заголовок и делать предположения о структурном формате, потому что формат отличается для каждого заголовка.

Можно сказать, что почти для всех заголовков HTTP запятая представляет собой несколько значений, идентичных вашему примеру:

Some-Header:Foo;x=foo_attr
Some-Header:Bar;y=bar_attr

Однако из этого правила есть исключения. Например, вы не можете сделать то же самое с заголовком Set-Cookie. Set-Cookie — единственное исключение, которое я могу вспомнить навскидку. (может быть и больше).

Но помимо этого, это в основном зависит от вас. Если вы определяете Some-Headers, вам нужно сообщить разработчикам, как его анализировать.

В настоящее время предпринимаются попытки разработать стандартный способ описания структур в заголовках. Вы можете прочитать текущий проект здесь:

draft-ietf-httpbis-header-structure