Значения заголовка с запятыми

http http-headers

1268 просмотра

1 ответ

Согласно спецификации HTTP заголовок может выглядеть так:

Header-Name=value1,value2,value3,...

Я пытаюсь разобрать значения заголовков и сохранить их в виде массива:

array('value1', 'value2', 'value3')

Все идет нормально. Я могу просто маркировать строку, если появляется запятая.

НО как я должен обрабатывать заголовки, как этот:

Expires=Thu, 01 Dec 1994 16:00:00 GMT

есть запятая, но в одном значении есть заголовок. О, это просто, подумал я и выяснил правило: разделяйте запятыми, только если до и после запятой нет места. Таким образом, оба примера будут проанализированы правильно.

НО тогда я столкнулся с заголовком как это:

Accept-Encding=gzip, deflate

и сейчас? Это одно значение array('gzip, deflate')или два значения array('gzip', 'deflate')? Для меня это два отдельных значения, но тогда мое правило из вышесказанного больше не соответствует действительности.

Есть ли список, какие заголовки разрешены более одного раза? Поэтому я могу проверить по черному списку, чтобы определить, означает ли запятая разделитель значений или нет?

Автор: TiMESPLiNTER Источник Размещён: 08.11.2019 11:22

Ответы (1)


4 плюса

Конкатенация запятых может происходить для любого поля заголовка, даже для тех, которые не предназначены для него; так работают библиотеки и посредники.

Он предназначен для использования в полях заголовка, которые используют синтаксис списка (в RFC 7230 есть все подробности).

Наконец, вы не можете использовать универсальный код для токенизации, потому что способ, которым запятая может появляться внутри значений, варьируется от поля к полю.

Автор: Julian Reschke Размещён: 20.08.2016 03:23
Вопросы из категории :
32x32