Инженерный совет Интернета (IETF) принял несколько новых стандартов, которые серьёзно обновляют протокол передачи данных HTTP 1.1.
- 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.2, хотя прежние спецификации HTTP 1.1 теперь считаются устаревшими.
RFC 2616 для HTTP 1.1 написан более 15 лет назад. Рабочая группа HTTPBis как минимум семь лет трудилась над их дополнением и уточнением. Когда речь идёт о настолько популярном и общепринятом стандарте, как HTTP, то каждая мелочь проходит через согласование и обсуждение на всех уровнях.
Новый стандарт HTTP 2.0, который скоро будет принят, тоже включит в себя десять вышеупомянутых RFC.
Самое главное отличие нового HTTP 1.1, по сравнению со старым, — гораздо большее количество текста. Соответственно, многие вещи разъясняются гораздо подробнее, так что всё стало проще и понятнее, и малейшие двусмысленности и неясности теперь исключены.
Во-вторых, основные спецификации теперь разделены на шесть частей, тогда как раньше было лишь две части: RFC 2616 для HTTP и RFC 2617 для аутентификации.
В-третьих, утверждён код состояния 308, который соответствует четвёртому варианту переадресации: «постоянная переадресация» (permanent redirect). Получив такой код, клиентская программа должна следовать указанию и выполнить в точности такой же запрос по новому адресу. Для сравнения, после кода 301 клиентская программа обычно меняет метод на GET.
RFC 7239 утверждает стандарт на заголовок Forwarded, который призван заменить несколько заголовков, в том числе X-Forwarded-For и X-Forwarded-Proto.
Из других изменений:
- прекращение поддержки HTTP 0.9;
- снятие ограничения в два соединения на сервер;
- снятие требования кодировки по умолчанию ISO-8859-1;
- удаление заголовка Content-MD5;
- запрет использования Content-Range на POST-запросах;
- кэширование кодов 204, 404, 405, 414 и 501;
- использование about:blank для указания referer’а в том случае, если не стоит прямой запрет на указание referer’а (чтобы отличать клиентов без referer’а от клиентов с запретом на его указание);
- заголовок Location теперь может указывать на ссылку с хештегом;
- и многое другое.