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

На подготовку обновления спецификации 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.


Источник: http://www.opennet.ru/opennews/art.shtml?num=39956