ПРОТОКОЛ ПЕРЕДАЧИ ГИПЕРТЕКСТА -- HTTP / 1.1

Автор статьи: Алексей Симонов
Сайт Автора: Нет
E-mail Автора: Leshik@omsk.com
Дата публикации: 26.03.2005





5.1.2 Запрашиваемый URI (Request-URI).

Запрашиваемый URI (Request-URI) - это Единообразный Идентификатор
Ресурса (URL, раздел 3.2), который идентифицирует ресурс запроса.

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 (смотрите раздел 3.2.1, abs_path)
ДОЛЖЕН быть передан как 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 передается в формате, определенном в разделе 3.2.1.
Первоначальный сервер ДОЛЖЕН декодировать Request-URI, чтобы
правильно интерпретировать запрос. Серверам СЛЕДУЕТ отвечать на
недопустимые Request-URI соответствующим кодом состояния.

В запросах, которые передаются далее, прокси-сервера никогда НЕ
ДОЛЖНЫ перезаписывать часть "abs_path" запрашиваемого URI
(Request-URI), за исключением случая, отмеченного выше, когда
пустой abs_path заменяется на "*", независимо от внутренней
реализации прокси-сервера.

Обратите внимание: правило "ничто не перезаписывать"
предохраняет прокси-сервера от изменения значения запроса,
в котором первоначальный сервер неправильно использует не
зарезервированные символы URL для своих целей. Реализаторам
следует знать, что некоторые до-HTTP/1.1 прокси-сервера, как
известно, перезаписывали Request-URI.



Список похожих статей