|
е будем останавливаться на этом вопросе.
Ниже приводятся некоторые заголовки запросов с их описаниями, а также имена пе-
ременных окружения, которые использует сервер для передачи их CGI-сценарию. Я
указываю заголовки вместе с примерами в том контексте, в котором они могут быть
применены, иными словами, вместе с наиболее распространенными их значениями.
Так будет несколько нагляднее.
GET
r Формат: GET сценарий?параметры HTTP/1.0
r Переменные окружения: REQUEST_URI; в переменной QUERY_STRING сохраняется
значение параметры, в переменной REQUEST_METHOD — ключевое слово GET.
Часть I. Основы Web-программирования 32
Этот заголовок является обязательным (если только не применяется метод POST) и
определяет адрес запрашиваемого документа на сервере. Также задаются параметры,
которые пересылаются сценарию (если сценарию ничего не передается, или же это
обычная статическая страница, то все символы после знака вопроса и сам знак
опус-
каются). Вместо строки HTTP/1.0 может быть указан и другой протокол — напри-
мер, HTTP/1.1. Именно его соглашения и будут учитываться сервером при обработке
данных, поступивших от пользователя, и других заголовков.
Строка сценарий?параметры задается в том же самом формате, в котором она вхо-
дит в URL. Неплохо было бы назвать эту строку как-нибудь более реалистично,
чтобы
учесть возможность присутствия в ней командных параметров. Такое название
дейст-
вительно существует и звучит как URI (Universal Resource Identifier —
Универсаль-
ный идентификатор ресурса). Очень часто его смешивают с понятием URL (вплоть до
того, что это происходит даже в официальной документации по стандартам HTTP).
Давайте договоримся, что в будущем я всегда буду называть словом URL полный
путь к некоторой Web-странице вместе с параметрами, и условимся, что под словом
URI будет пониматься его часть, расположенная после имени (или IP-адреса) хоста
и
номера порта.
POST
r Формат: POST сценарий?параметры HTTP/1.0
r Переменная окружения: REQUEST_URI; в переменной QUERY_STRING сохраняется
значение параметры, в переменной REQUEST_METHOD — слово POST.
Этот заголовок используется при передаче данных методом POST. Вскоре мы рас-
смотрим этот метод подробнее, а пока скажу лишь, что он отличается от метода
GET
тем, что данные можно передавать не только через командную строку, но и в конце
всех заголовков.
Content-type
r Формат: Content-Type: application/x-www-form-urlencoded
r Переменная: CONTENT_TYPE
Данный заголовок идентифицирует тип передаваемых данных. Обычно для этого ука-
зывается значение application/x-www-form-urlencoded, что означает формат, в
котором все управляющие символы (отличные от алфавитно-цифровых и других ото-
бражаемых) специальным образом кодируются. Это тот самый формат передачи, ко-
торый используется методами GET и POST. Довольно распространен и другой формат,
и называется он multipart/form-data. Мы разберем его, когда будем обсуждать
вопрос, касающийся загрузки файлов на сервер.
Хочу обратить ваше внимание на то, что сервер никак не интерпретирует
рассматри-
ваемый заголовок, а просто передает его сценарию через переменную окружения.
Глава 2. Интерфейс CGI 33
User-Agent
r Формат: User-Agent: Mozilla/4.5 [en] (Win95; I)
r Переменная окружения: HTTP_USER_AGENT
Уточняет версию браузера (в данном случае это Netscape Navigator).
Referer
r Формат: Referer: URL_адрес
r Переменная окружения: HTTP_REFERER
Как правило, этот заголовок формируется браузером и содержит URL страницы, с
которой осуществился переход на текущую страницу по гиперссылке. Впрочем, если
вы пишете сценарий, который в целях безопасности отслеживает значение данного
заголовка (например, для его запуска только с определенной страницы), помните,
что
умелый хакер всегда сможет подделать заголовок Referer.
Вы, наверное, подумали, что слово referer пишется по-английски с двумя бук-
вами "r". Да, вы правы. Однако те, кто придумывал стандарт HTTP, этого, ви-
димо, не знали. Та
|
|