Метод Method

Метод Method. Лексема метода указывает метод, который нужно применить к ресурсу, идентифицированному запрашиваемым URI Request-URI . Метод чувствителен к регистру.

Method OPTIONS GET HEAD POST PUT DELETE TRACE extension-method extension-method token Список методов, применимых к ресурсу, может быть указан в поле заголовка Allow. Возврашаемый код состояния ответа всегда сообщает клиенту, допустим ли метод для ресурса в настоящее время, так как набор допустимых методов может изменяться динамически.

Серверам следует возвратить код состояния 405 Метод не допустим, Method Not Allowed, если метод известен серверу, но не применим для запрошенного ресурса, и 501 Не реализовано, Not Implemented, если метод не распознан или не реализован сервером. Список методов, известных серверу, может быть указан в поле заголовка ответа Public.

Методы GET и HEAD должны поддерживаться всеми универсальными general-purpose серверами. Остальные методы опциональны. 5.1.2 URI запроса Request-URI .URI запроса Request-URI - это Единообразный Идентификатор Ресурса URL , который идентифицирует ресурс запроса. Request-URI absoluteURI abs path Три опции для URI запроса Request-URI зависят от характера запроса. Звездочка означает, что запрашивается не специфический ресурс, а сервер непосредственно, и допустим только в том случае, когда используемый метод не обязательно обращается к ресурсу.

В качестве примера OPTIONS HTTP 1.1 absoluteURI необходим, когда запрос производится через прокси-сервер. Прокси-сервер перенаправляет запрос на сервер или обслуживает его, пользуясь кэшем, и возвращает ответ. Прокси-сервер может переслать запрос другому прокси-серверу или непосредственно серверу, определенному absoluteURI. Чтобы избежать зацикливания запроса прокси-сервер должен быть способен распознавать все имена сервера, включая любые псевдонимы, локальные разновидности, и числовые IP адреса.

Request-Line может быть, например, таким GET http www.w3.org pub WWW TheProject.html HTTP 1.1 Чтобы обеспечить переход к absoluteURI во всех запросах в будущих версиях HTTP, все HTTP 1.1 сервера должны принимать absoluteURI в запросах, хотя HTTP 1.1 клиенты будут генерировать их только в запросах к прокси-серверам. Наиболее общая форма Request-URI используется для идентификации ресурса на первоначальном сервере или шлюзе.

В этом случае абсолютный путь URI должен быть передан как Request-URI, а сетевое расположение URI net loc должно быть передано в поле заголовка Host. Для последнего примера клиент, желающий получить ресурс непосредственно с первоначального сервера должен создать TCP соединение на 80 порт хоста www.w3.org и послать строки GET pub WWW TheProject.html HTTP 1.1 Host www.w3.org и далее остаток запроса. Абсолютный путь не может быть пустым если оригинальный URI пуст, то он должен запрашиваться как корневой каталог сервера. Если прокси-сервер получает запрос без пути в Request-URI, и метод запроса допускает форму запроса, то последний прокси-сервер в цепочке запросов должен передать запрос, в котором Request-URI равен. Например запрос OPTIONS http www.ics.uci.edu 8001 HTTP 1.1 был бы передан прокси-сервером в виде OPTIONS HTTP 1.1 Host www.ics.uci.edu 8001 после соединения с портом 8001 хоста www.ics.uci.edu. Первоначальный сервер должен декодировать Request-URI, чтобы правильно интерпретировать запрос.

Серверам сдледует отвечать на недопустимые Request-URI соответствующим кодом состояния.

В запросах, пересылаемых прокси-сервером, часть abs path URI запроса Request-URI никогда не должна перезаписываться, за исключением случая, отмеченного выше, когда пустой abs path заменяется на, независимо от внутренней реализации прокси-сервера. Правило ничто не перезаписывать предохраняет прокси-сервера от изменения значения запроса, в котором первоначальный сервер неправильно использует не зарезервированные символы URL для своих целей. 5.2 Ресурс, идентифицируемый запросом. Первоначальные HTTP 1.1 сервера должны учитывать, что точный ресурс, идентифицируемый интернет-запросом определяется путем исследования запрашиваемого URI Request-URI и поля заголовка Host. Первоначальный сервер, который не различает ресурсы по запрошенному хосту host, может игнорировать значение поля заголовка Host. Первоначальный сервер, который различает ресурсы на основании запрошенного хоста host иногда называемые виртуальными хостами или vanity hostnames должен пользоваться следующими правилами для определения ресурса, запрошенного в HTTP 1.1 запросе 1. Если Request-URI - это absoluteURI, то хост - это часть Request-URI. Любые значения поля заголовка Host в запросе должны игнорироваться. 2. Если Request-URI - не absoluteURI, а запрос содержит поле заголовка Host, то хост определяется значением поля заголовка Host. 3. Если хоста, определенного правилами 1 или 2 не существует на сервере, кодом состояния ответа должен быть 400 Испорченный Запрос, Bad Request. Получатели HTTP 1.0 запроса, в котором отсутствует поле заголовка Host, могут попытаться использовать эвристику например, исследовать путь в URI на предмет уникальности на каком-либо из хостов для определения какой именно ресурс запрашивается. 5.3 Поля заголовка запроса. Поля заголовка запроса позволяют клиенту передать серверу дополнительную информацию о запросе и о самом клиенте.

Эти поля действуют как модификаторы запроса с семантикой, эквивалентной параметрам вызова методов в языках программирования. request-header Accept Accept-Charset Accept-Encoding Accept-Language Authorization From Host If-Modified-Since If-Match If-None-Match If-Range If-Unmodified-Since Max-Forwards Proxy-Authorization Range Referer User-Agent Множество имен полей заголовка запроса Request-header может быть надежно расширено только в сочетании с изменением версии протокола.

Однако, новые или экспериментальные поля заголовка могут получить семантику полей заголовка запроса Request-header, если все стороны соединения распознают их как поля заголовка запроса Request-header. Нераспознанные поля заголовка обрабатываются как поля заголовка объекта entity-header . 6 Ответ Response. После получения и интерпретации сообщения запроса, сервер отвечает сообщением HTTP ответа.

Response Status-Line general-header response-header entity-header CRLF message-body 6.1 Строка состояния Status-Line. Первая строка ответа - это строка состояния Status-Line. Она состоит из версии протокола HTTP-Version, числового кода состояния Status-Code и поясняющей фразы Reason-Phrase разделенных символами SP. CR и LF не допустимы в Status-Line, за исключением конечной последовательности CRLF. Status-Line HTTP-Version SP Status-Code SP Reason-Phrase CRLF 6.1.1