Информационные технологииStfw.Ru 🔍
🕛

Впервые за 15 лет обновлена спецификация протокола HTTP/1.1

Инженерный комитет IETF (Internet Engineering Task Force), занимающегося развитием протоколов и архитектуры сети Интернет, признал устаревшим выпущенный в 1999 году RFC 2616, определяющий пр
Инженерный комитет IETF (Internet Engineering Task Force), занимающегося развитием протоколов и архитектуры сети Интернет, признал устаревшим выпущенный в 1999 году RFC 2616, определяющий протокол HTTP/1.1. Аналогичная судьба постигла RFC 2617, определяющий механизмы аутентификации HTTP. Для описания HTTP/1.1 представлена серия новых RFC, учитывающих современные реалии (например, в 1999 году не предполагалось внебраузерное применение HTTP (HTTP API), появление AJAX и методов HTML5):


RFC 7230: Message Syntax and Routing
RFC 7231: Semantics and Content
RFC 7232: Conditional Requests
RFC 7233: Range Request
RFC 7234: Caching
RFC 7235: Authentication
RFC 7236: Authentication Scheme Registrations
RFC 7237: Method Registrations
RFC 7238: the 308 status code
RFC 7239: Forwarded HTTP extension


На подготовку обновления спецификации HTTP/1.1 ушло семь лет, было выпущено 26 предварительных черновиков, внесено более 2600 изменений, устранено 550 недоработок. Обновления были разработаны участниками группы HTTPBis, также ответственной за создание стандарта HTTP/2.0. Разделение спецификации на группу отдельных RFC произведено с целью оптимизации будущей спецификации HTTP/2.0, в которой теперь можно сослаться на типовые не изменившиеся технологии, вместо их переопределения. При этом, по отдельности документы более компактны, в то время как старый RFС состоял из 176 страниц. Описание элементов HTTP/1.1 значительно упрощено для восприятия и детализировано. Из текста исключены двусмысленные формулировки.

Из нововведений можно выделить:

Стандартизован 308 код статуса выполнения запроса, определяющий механизм постоянного перенаправления (permanent redirect). В отличие от кода 301 (Moved Permanently), при получении кода 308 клиенту запрещается менять текущий метод запроса (при 301 метод обычно менялся на GET);
Приведена к устоявшейся практике логика реакции на коды статуса 301 и 302, которая теперь подразумевает смену метода с POST на GET;
Стандартизован заголовок Forwarded для сохранения IP-адреса оригинального запроса после проброса соединения через прокси или балансировщик нагрузки. Forwarded пришёл на замену таким заголовкам, как X-Forwarded-For и X-Forwarded-Proto;
Явно определено поведение при наличии непредусмотренных символов пробела и запрещено разбиение содержимого заголовков на несколько строк, что должно исключить появление уязвимостей, манипулирующих разделением запроса;
Снято ограничение на два одновременных соединения к серверу;
Прекращена поддержка HTTP/0.9;
Удалено требование к использованию ISO-8859-1 как кодировки по умолчанию;
Снято требование по обязательной обработке всех полей заголовков Content-*;
Запрещено использование Content-Range в PUT-запросах;
В качестве значения Referer при открытии страницы с нуля рекомендовано использовать "about:blank", что позволит отделить запросы без перехода от запросов с запрещённым Referer;
Определена допустимость кэширования для кодов 204, 404, 405, 414 и 501;

Содержимое заголовка Location теперь может задаваться относительно текущего URI;
Удалена поддержка заголовка Content-MD5.

Также по теме:
Компьютерная техника и гаджеты, периферия, технические устройства и ИТ-оборудование.