РНР 5 в подлиннике

Страница 31 из 554


64

Часть I. Основы Web-программирования

Примечание )

В настоящий момент доступ к большинству сайтов можно получить только по протоколу HTTP 1.1 (но не 1.0), а значит, указание заголовка Host является практически обязательным.

Переменную окружения http_host очень часто путают с другой переменной, server_name. В большинстве случаев серверы конфигурируют так, что обе переменные содержат одинаковое значение (например, в Apache для этого существует директива useCanonicaiName off), однако возникают ситуации, когда это не так. Величина http_host всегда идентична тому доменному имени, который ввел пользователь в браузере, в то время как server_name иногда может содержать строку, жестко записанную в конфигурации сервера (в Apache это происходит при указании

UseCanonicaiName on).

шшшшшшт

Существует одно важное отличие между переменными http_host и server_name. Дело в том, что server_name никогда не включает номер порта, к которому подключился браузер (обычно 80), в то время как http_host, наоборот, содержит значение вида хост: порт, когда порт отличен от 80.

Какую же переменную использовать в скриптах? Вероятнее всего, http_host, но в случае, если она не установлена (например, используется HTTP 1.0, где данный заголовок не поддерживается), подставлять вместо нее server_name.

User-Agent

□ Формат:

User-Agent: Mozilla/4.5 [en] (Win95; I)

□ Переменная окружения: http_user_agent.

Уточняет версию браузера (в данном случае это Netscape Navigator).

Referer

□ Формат:

Referer: URL_appec

□ Переменная окружения: http_referer.

Как правило, этот заголовок формируется браузером и содержит URL страницы, с которой осуществился переход на текущую страницу по гиперссылке. Впрочем, если вы пишете сценарий, который в целях безопасности отслеживает значение данного заголовка (например, для его запуска только с определенной страницы), помните, что умелый хакер всегда сможет подделать заголовок Referer.

( Замечание ^

Вы, наверное, подумали, что слово referer пишется по-английски с двумя буквами "г". Да, вы правы. Однако те, кто придумывал стандарт HTTP, этого, видимо, не знали. Так что не позволяйте столь досадному факту ввести себя в заблуждение, когда будете в сценарии использовать переменную окружения http_REferer.

Глава 2. Интерфейс CGI и HTTP

65

Content-length

□ Формат:

Content-length: длина

□ Переменная окружения: content_length.

Заголовок содержит строку, являющуюся десятичным представлением длины данных в байтах, передаваемых методом post. Если задействуется метод get, то этот заголовок отсутствует, и значит, переменная окружения не устанавливается.

Cookie

□ Формат:

Cookie: значения_соок1ез

□ Переменная окружения: httpjcookie.

Здесь хранятся все cookies в URL-кодировке (о cookies мы подробнее поговорим в следующей главе).

Accept

□ Формат:

Accept: text/html, text/plain, image/gif, image/jpeg

□ Переменная окружения: http_accept.

В этом заголовке браузер перечисляет, какие типы документов он "понимает". Перечисление производится через запятую. К сожалению, в последнее время браузеры стали несколько небрежны и часто присылают в этом заголовке значение */*, что обозначает любой тип.

Существует еще множество заголовков запроса (часть из них востребуются только протоколом HTTP 1.1), но мы не будем на них задерживаться.

Эмуляция браузера через telnet

Между прочим, при передаче запроса браузер "притворяется" пользователем, который запустил telnet-клиента (программу, которая умеет подключаться к заданному IP-адресу и порту, посылать набранное на клавиатуре и отображать на экране поступающие "снаружи" данные) и вводит строки заголовков вручную, т. е. в текстовом виде. Например, вместо того чтобы набрать в браузере http://example.com/, попробуйте в командной строке ОС (Unix, Windows 95/98, Windows NT/2000 или любой другой) выполнить следующие команды (вместо клавиши <Enter> нажимая соответствующую клавишу):

telnet example.com 80<Enter> GET /index.html HTTP/1.0<Enter> Host: example.com<Enter> <Enter>

Вы увидите, как перед вами промелькнут строки HTML-документа index.html. Очень рекомендуем проделать описанную процедуру, чтобы избавиться от духа мистицизма



  • Смотрите http://www.pc400d20.ru техническая соль.
  • Готовые фирмы с лицензией Фсб посмотреть.

  Hostland.Ru

 «Бесплатный хостинг Hostland.Su» © 2006