ПРОТОКОЛ ПЕРЕДАЧИ ГИПЕРТЕКСТА -- HTTP / 1.1 |
||||
---|---|---|---|---|
Содержание. 1 Введение ................................................7 1.1 Цель .................................................7 1.2 Требования ...........................................7 1.3 Терминология .........................................8 1.4 Общее описание ......................................11 2 Письменные соглашения и обобщенная грамматика ..........13 2.1 Увеличенная нормальная запись Бекуса-Наура (BNF) ....13 2.2 Основные правила ....................................15 3 Параметры протокола ....................................17 3.1 Версия HTTP .........................................17 3.2 Универсальные Идентификаторы Ресурсов (URI) .........18 3.2.1 Общий синтаксис ..................................18 3.2.2 HTTP URL .........................................19 3.2.3 Сравнение URI ....................................20 3.3 Форматы даты/времени ................................21 3.3.1 Полная дата ......................................21 3.3.2 Разность секунд (delta seconds) ..................22 3.4 Кодовые таблицы (character sets) ....................22 3.5 Кодирование содержимого (content codings) ...........23 3.6 Кодирование передачи (transfer codings) .............24 3.7 Медиа типы (Media Types) ............................25 3.7.1 Канонизация и предопределенные значения типа text .............................................26 3.7.2 Типы Multipart ...................................27 3.8 Лексемы программ (Product Tokens) ...................28 3.9 Качественные значения (Quality Values) ..............28 3.10 Метки языков (Language Tags) .......................28 3.11 Метки объектов (Entity Tags) .......................29 3.12 Еденицы измерения диапазонов (Range Units) .........30 4 HTTP сообщение (HTTP Message) ..........................30 4.1 Типы сообщений ......................................30 4.2 Заголовки сообщений .................................31 4.3 Тело cообщения ......................................32 4.4 Длина сообщения .....................................32 4.5 Общие поля заголовка ................................34 5 Запрос (Request) .......................................34 5.1 Строка запроса (Request-Line) .......................34 5.1.1 Метод (Method) ...................................35 5.1.2 Запрашиваемый URI (Request-URI) ..................35 5.2 Ресурс, идентифицируемый запросом ...................37 5.3 Поля заголовка запроса ..............................37 6 Ответ (Response) .......................................38 6.1 Строка состояния (Status-Line) ......................38 6.1.1 Код состояния и поясняющая фраза .................39 6.2 Поля заголовка ответа ...............................41 7 Объект (Entity) ........................................41 7.1 Поля заголовка объекта ..............................41 7.2 Тело объекта ........................................42 7.2.1 Тип (Type) .......................................42 7.2.2 Длина (Length) ...................................43 8 Соединения (Connections) ...............................43 8.1 Постоянные соединения (Persistent Connections) ......43 8.1.1 Цель .............................................43 8.1.2 Общее описание ...................................44 8.1.3 Прокси-сервера (Proxy Servers) ...................45 8.1.4 Практические cоглашения ..........................45 8.2 Требования к передаче сообщений .....................46 9 Определения методов (Method Definitions) ...............48 ? 9.1 Безопасные и Idempotent Методы ......................48 9.1.1 Безопасные методы ................................48 ? 9.1.2 Idempotent методы (Idempotent Methods) ...........49 9.2 OPTIONS .............................................49 9.3 GET .................................................50 9.4 HEAD ................................................50 9.5 POST ................................................51 9.6 PUT .................................................52 9.7 DELETE ..............................................53 9.8 TRACE ...............................................53 10 Описания кодов состояния ..............................53 10.1 1xx - Информационные коды ..........................54 10.1.1 100 Продолжать, Continue ........................54 10.1.2 101 Переключение протоколов, Switching Protocols ...................................54 10.2 2xx - Успешные коды ................................54 10.2.1 200 ОК ..........................................54 10.2.2 201 Создан, Created .............................55 10.2.3 202 Принято, Accepted ...........................55 10.2.4 203 Не авторская информация, Non-Authoritative Information .................................55 10.2.5 204 Нет содержимого, No Content .................55 10.2.6 205 Сбросить содержимое, Reset Content ..........56 10.2.7 206 Частичное содержимое, Partial Content .......56 10.3 3xx - Коды перенаправления .........................56 10.3.1 300 Множественный выбор, Multiple Choices .......57 10.3.2 301 Постоянно перенесен, Moved Permanently ......57 10.3.3 302 Временно перемещен, Moved Temporarily .......58 10.3.4 303 Смотреть другой, See Other ..................58 10.3.5 304 Не модифицирован, Not Modified ..............58 10.3.6 305 Используйте прокси-сервер, Use Proxy ........59 10.4 4xx - Коды ошибок клиента ..........................59 10.4.1 400 Испорченный Запрос, Bad Request .............60 10.4.2 401 Несанкционированно, Unauthorized ............60 10.4.3 402 Требуется оплата, Payment Required ..........60 10.4.4 403 Запрещено, Forbidden ........................60 10.4.5 404 Не найден, Not Found ........................60 10.4.6 405 Метод не дозволен, Method Not Allowed .......61 10.4.7 406 Не приемлем, Not Acceptable .................61 10.4.8 407 Требуется установление подлинности через прокси-сервер, Proxy Authentication Required ....................................61 10.4.9 408 Истекло время ожидания запроса, Request Timeout .....................................62 10.4.10 409 Конфликт, Conflict .........................62 10.4.11 410 Удален, Gone ...............................62 10.4.12 411 Требуется длина, Length Required ...........63 10.4.13 412 Предусловие неверно, Precondition Failed ...63 10.4.14 413 Объект запроса слишком большой, Request Entity Too Large ...........................63 10.4.15 414 URI запроса слишком длинный, Request-URI Too Long ...................................63 10.4.16 415 Неподдерживаемый медиа тип, Unsupported Media Type .................................63 10.5 5xx - Коды ошибок сервера ..........................64 10.5.1 500 Внутренняя ошибка сервера, Internal Server Error .......................................64 10.5.2 501 Не реализовано, Not Implemented .............64 10.5.3 502 Ошибка шлюза, Bad Gateway ...................64 10.5.4 503 Сервис недоступен, Service Unavailable ......64 10.5.5 504 Истекло время ожидания от шлюза, Gateway Timeout .....................................64 10.5.6 505 Не поддерживаемая версия HTTP, HTTP Version Not Supported ...............................65 11 Установление подлинности доступа (Access Authentication) .......................................65 11.1 Базовая схема установления подлинности (Basic Authentication Scheme) .............................66 11.2 Обзорная схема установления подлинности (Digest Authentication Scheme) .............................67 12 Обсуждение содержимого (Content Negotiation) ..........67 12.1 Управляемое сервером обсуждение ....................68 12.2 Управляемое агентом обсуждение .....................69 12.3 Прозрачное обсуждение ..............................70 13 Кэширование в HTTP ....................................70 13.1.1 Правильность кэширования ........................72 13.1.2 Предупреждения ..................................73 13.1.3 Механизмы управления кэшем ......................74 13.1.4 Явные предупреждения User Agent .................74 13.1.5 Исключения из правил и предупреждений ...........75 13.1.6 Контроллируемое клиентом поведение ..............75 13.2 Модель устаревания .................................75 13.2.1 Устаревание, определеяемое сервером .............75 13.2.2 Эвристическое устаревание .......................76 13.2.3 Вычисление возраста .............................77 13.2.4 Вычисление устаревание ..........................79 13.2.5 Значения однозначного устаревания ...............80 13.2.6 Disambiguating Multiple Responses ...............80 13.3 Модель сравнения (validation model) ................81 13.3.1 Даты последнего изменения (Last-modified Dates)..82 13.3.2 Объектные отметки сравнения кэша ................82 13.3.3 Слабое и сильное сравнение ......................82 13.3.4 Правила когда использовать объектные отметки (Entity Tags) и даты последнего изменения (Last- modified Dates).........................................85 13.3.5 Непроверяемые условия ...........................86 13.4 Cachability ответа .................................86 13.5 Построение ответов из кэшей ........................87 13.5.1 Сквозные (End-to-end) и промежуточные (Hop-by-hop) заголовки ..............................................88 13.5.2 Немодифицируемые заголовки ......................88 13.5.3 Объединение заголовков ..........................89 13.5.4 Объединнение диапазонов байтов ..................90 13.6 Кэширование переговорных ответов (Negotiated Responses)...............................................90 13.7 Общедоступные и необщедоступные кэши ...............91 13.8 Поведение кеша при ошибочных или незавершенных ответах .................................................91 13.9 Побочные эффекты GET и HEAD ........................92 13.10 Ошибки после модификаций или стирания .............92 13.11 Write-Through Mandatory ...........................93 13.12 Замена кэша .......................................93 13.13 Списки history ....................................93 14 Определения полей заголовка ...........................94 14.1 Accept .............................................95 14.2 Accept-Charset .....................................97 14.3 Accept-Encoding ....................................97 14.4 Accept-Language ....................................98 14.5 Accept-Ranges ......................................99 14.6 Age ................................................99 14.7 Allow .............................................100 14.8 Authorization .....................................100 14.9 Cache-Control .....................................101 14.9.1 Что кэшируемо (Cachable) .......................103 14.9.2 Что может быть сохранено кэшем .................103 14.9.3 Модификации основного механизма устаревания ....104 14.9.4 Перепроверки правильности кэша и средства управления перезагрузкой ..............................105 14.9.5 Директива No-Transform .........................107 14.9.6 Расширения средств управления кэшем ............108 14.10 Connection .......................................109 14.11 Content-Base .....................................109 14.12 Content-Encoding .................................110 14.13 Content-Language .................................110 14.14 Content-Length ...................................111 14.15 Content-Location .................................112 14.16 Content-MD5 ......................................113 14.17 Content-Range ....................................114 14.18 Content-Type .....................................116 14.19 Date .............................................116 14.20 ETag .............................................117 14.21 Expires ..........................................117 14.22 From .............................................118 14.23 Host .............................................119 14.24 If-Modified-Since ................................119 14.25 If-Match .........................................121 14.26 If-None-Match ....................................122 14.27 If-Range .........................................123 14.28 If-Unmodified-Since ..............................124 14.29 Last-Modified ....................................124 14.30 Location .........................................125 14.31 Max-Forwards .....................................125 14.32 Pragma ...........................................126 14.33 Proxy-Authenticate ...............................127 14.34 Proxy-Authorization ..............................127 14.35 Public ...........................................127 14.36 Range ............................................128 14.36.1 Диапазоны байт (byte ranges) ..................128 14.36.2 Запросы диапазонов (Range Retrieval Requests) .............................................130 14.37 Referer ..........................................131 14.38 Retry-After ......................................131 14.39 Server ...........................................132 14.40 Transfer-Encoding ................................132 14.41 Upgrade ..........................................132 14.42 User-Agent .......................................134 14.43 Vary .............................................134 14.44 Via ..............................................135 14.45 Warning ..........................................137 14.46 WWW-Authenticate .................................139 15 Положения о защите ...................................139 15.1 Установления подлинности клиентов .................139 15.2 Предложение выбрать схему установления подлинности.............................................140 15.3 Неправильное обращение с информацией файла регистрации сервера (Log)...............................141 15.4 Передача чувствительной (sensitive) информации ....141 15.5 Атаки, основанные именах файлов и путей............142 15.6 Персональная информация ...........................143 15.7 Проблемы секретности, связанные с Accept заголовками ............................................143 15.8 Подмена DNS-адресов (DNS Spoofing).................144 15.9 Расположение заголовков и Spoofing ................144 16 Подтверждения ........................................144 17 Ссылки ...............................................146 18 Адреса авторов .......................................149 19 Приложения ...........................................150 19.1 Медиа тип Интернет message/http ...................150 19.2 Медиа тип Интернет multipart/byteranges ...........150 19.3 Допустимые приложения .............................151 19.4 Различия между HTTP объектами и MIME объектами ....152 19.4.1 Преобразование к канонической форме ............152 19.4.2 Преобразование форматов дат ....................153 19.4.3 Введение Content-Encoding ......................153 19.4.4 Никакого Content-Transfer-Encoding .............153 19.4.5 Поля HTTP заголовка в Multipart Body-Parts .....153 19.4.6 Введение Transfer-Encoding .....................154 19.4.7 Версия MIME ....................................154 19.5 Изменения после HTTP/1.0 ..........................154 19.5.1 Изменения упрощаущие много-homed сервера и сохраняющие IP адреса .................................155 19.6 Дополнительные возможности ........................156 19.6.1 Дополнительные методы запросов .................156 19.6.2 Дополнительные определения полей заголовка .....156 19.7 Совместимость с предыдущими версиями ..............160 19.7.1 Совместимость с постоянными соединениями, определяемыми HTTP/1.0 ...............................161 |