Назначение полей заголовка псевдо / двоеточия

Как следует из названия, я ищу некоторую информацию о назначении полей заголовка псевдо / двоеточия, т.е. я хочу знать, почему у нас есть второй тип поля заголовка ...

Также - я знаю, что поля заголовка псевдо / двоеточия используются в http2 вместо строк сообщения и статуса (^^^ причина, по которой я не знаю ^^^); но используются ли поля заголовка псевдо / двоеточия в http1 для передачи различной информации (от статуса и запроса)?


person Nathodius    schedule 17.06.2015    source источник


Ответы (1)


Назначение полей псевдозаголовка состояло в том, чтобы унифицировать способ передачи информации запроса / ответа в SPDY, а затем в HTTP / 2 (который основан на SPDY).

Когда был разработан SPDY (но также и HTTP / 2), возникла необходимость в транспортировке информации запроса или ответа, отформатированной по-разному.

Заголовки HTTP представляют собой пары (ключ, значение), это просто.

Однако есть понятие метода HTTP. Это первый токен в строке запроса, так что это не кортеж; его ключ определяется его позицией (первый токен), а его значение - это фактические символы, присутствующие в строке запроса, которые образуют первый токен.

То же самое с целью запроса и версией HTTP: они являются вторым и третьим токенами в строке запроса.

Итак, концептуально HTTP-запрос может быть представлен парами таким образом, например:

(method, GET)  
(target, /)  
(version, HTTP/1.1)  
(Connection, close)  
(Accept, *)  

Однако «метод», «цель» и «версия» не могли использоваться в качестве простых заголовков HTTP, потому что они никогда не были зарезервированы в качестве стандартных имен заголовков HTTP спецификацией HTTP, и люди могли использовать их как пользовательские имена заголовков HTTP (представьте себе REST API с использованием заголовка «версия»).

HTTP / 2 нуждался в способе передачи этих пар однородным образом, в виде пар, потому что это упростило бы (значительно) протокол.

Следовательно, введение специальных имен для дополнительной информации, переносимой строками запроса и ответа. Эта дополнительная информация позиционируется в HTTP / 1.1, но обычная пара в HTTP / 2, что делает HTTP / 2 более однородным в этом отношении: он просто переносит пары. Настолько, что кадр HTTP / 2, содержащий информацию о запросах и ответах, одинаков и называется просто ЗАГОЛОВКИ.

Имена псевдо-заголовков были выбраны, чтобы начинаться с двоеточия, потому что это был бы недопустимый символ для имени заголовка в HTTP / 1.1. HTTP / 1.1 не использует имена псевдозаголовков.

person sbordet    schedule 17.06.2015
comment
Цените урок истории, мне всегда было интересно, что означают эти заголовки. - person Eric Mutta; 27.01.2021