Заголовки HTTP пробел / регистр / порядок чувствительны? - PullRequest
0 голосов
/ 08 мая 2019

Допустим, у меня есть следующие заголовки:

Strict-Transport-Security: max-age=<expire-time>
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains
Strict-Transport-Security: max-age=<expire-time>; preload

Для написания регулярных выражений мне нужно знать:

Чувствительны ли к пробелам заголовки?например, max-age=<expire-time> vs. Max-age=<expire-time> Они чувствительны к регистру?например, max-age= <expire-time> vs. Max-age=<expire-time> Они чувствительны к порядку?например, max-age=<expire-time>; preload vs. preload; max-age=<expire-time>;

Ответы [ 2 ]

1 голос
/ 08 мая 2019

Источником ответа на этот вопрос является стандарт - вот для чего нужны стандарты.Цитировать из RFC 7230, раздел 3.2 :

Каждое поле заголовка состоит из нечувствительного к регистру имени поля , за которым следует двоеточие (":"),необязательный начальный пробел, значение поля и необязательный конечный пробел.

Что касается значений поля, это зависит от фактического заголовка.Для примеров в Set-Cookie значения чувствительны к регистру.Для Strict-Transport-Security вы должны посмотреть соответствующий стандарт.В RFC 6797 говорится в разделе 6.1 :

  1. Порядок появления директив незначителен .
    ...
  2. Имена директив без учета регистра .
0 голосов
/ 08 мая 2019

Вы должны прочитать относительные спецификации RFC.

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

Значения заголовков HTTP могут с учетом регистра в зависимости от заголовка.Для заголовка Strict-Transport-Security ваши вопросы рассматриваются в этом RFC , а именно:

Он основан на общей грамматике, определенной в Раздел 2 [RFC2616] (что включает в себя понятие «подразумеваемый линейный пробел», также известный как «подразумеваемый * LWS»).

Что в основном означает, что пробел не важен.

И затемRFC HSTS продолжает:

  1. Порядок появления директив не имеет значения.

...

В именах директив регистр не учитывается.
...