Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Экзамен / web / example1 / Введение в PHP.doc
Скачиваний:
96
Добавлен:
18.05.2015
Размер:
3 Mб
Скачать

Клиентские методы и заголовкиHttp

В HTTP используются три основных типа запросов:

GET-запросы. Когда вы хотите только получить информацию от источника HTTP, то можете сделать это методом GET. Получить информацию можно из файла, либо от исполняемой программы на Web-сервере с указанным URL-адресом.

POST-запросы. Когда вы хотите отправить от клиента Web-серверу содержимое Web-формы, то используете запрос POST

HEAD-запросы. Когда вы хотите получить информацию о запрошенном URL, но не информацию самого URL, то используете запрос HEAD.

Чтобы получить доступ к метаинформации, можно обратиться к объекту HttpClient.

При выполнении таких HTTP-методов, как GET или POST, их результат возвраща-ется в первой строке ответа сервера, включающем трехзначный код состояния, например:

НТТР/1.1 200 ОК

Первая часть ответа — НТТР/1.1 — показывает тип протокола, 200 ОК — код ответа сервера.

Существуют пять основных типов кодов ответа, разбитых на группы:

100 — 199: общая информация; 200 — 299: корректный запрос клиента; 300 — 399: запрос был перенаправлен по другому адресу; 400 — 409: ошибка клиентского запроса; 500 — 509: ошибка на стороне сервера.

Наиболее часто применяемые коды: 200-ОК — запрос клиента принят, ответ сервера будет содержать запрошенные данные. 404: запрошенная информация не найдена по указанному URL. 401: неавторизованный запрос. Когда код состояния 401 отправляется браузеру, последний должен запросить у клиента удостоверение.

Как уже было сказано выше, транзакции HTTP состоят из метода HTTP и не-которого количества HTTP-заголовков. Существуют четыре основных типа HTTP-заголовков:

Общий (general). Сюда относятся заголовки, которые используются и клиентом и сервером, включающие общую информацию, такую как дата, кэширование и состояние соединения. Среди них следующие:

Cache-control, Connection, Date, Pragma. Trailer, Transfer-Encoding, Upgrade, Via, Warning.

Запрос (request). Когда клиент запрашивает информацию, заголовок запроса содержит сведения о конфигурации клиента и поддерживаемых форматах данных. Заголовки запроса включают следующие:

Accept, Accept-Charset, Accept-Encoding, Accept-Language, Authoriza¬tion, Cookie, Expect, From, Host, If-Modified-Since, If-Match, If-None-Match, If-Range, If-Unmodified, Max-Forwards, Proxy-Authorization, Range, Referer, ТЕ (transfer encoding — кодировка передачи), User-Agent.

Ответ (response). Когда сервер посылает информацию клиенту, заголовки ответа описывают конфигурацию сервера и несут информацию о запрошенном URL. Заголовки запроса включают следующие:

Accept-Ranges, Age, ETag, Location, Proxy-Authenticate, Retry-After, Server, Set-Cookie, Vary, WWW-Authenticate.

Сущность (entity). Эти заголовки содержат информацию о формате информации, отправленной туда и обратно. Они могут быть использованы как серверами (при отправке информации), так и клиентами (при подтверждении данных, обычно при операции POST). Сущностные заголовки включают следующие:

Allow, Content-Encoding, Content-Language, Content-Length, Content-Location, Content-Range, Content-Type, Expires, Last-Modified.

Идентификация клиентов и серверов

Когда выполняется транзакция HTTP, то и клиент, и сервер, участвующие в ней, могут идентифицировать себя. Как и большинство случаев идентификации в Internet, это не обязательно и легко подделать. Идентификация со стороны клиента осуществляется отправкой серверу заголовка User-agent, который описывает тип клиента. Соответственно, сервер посылает заголовок Server клиенту. Заголовок User-agent позволяет настроить информацию для разных клиентов индивидуально. Это касается исего — от обработки ошибок в разных браузерах, до включения расширенных средств конкретного браузера.

Хотя обычно заголовок User-agent отправляется из браузера на сервер, заголовок Server, не всегда посылается во время HTTP-транзакции. Это — предосторожность в интересах безопасности.

Ниже приведены несколько примеров строк с заголовком User-agent:

Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705)

Mozilla/4.0 (compatible; MSIE 6.0; Windows 98; .NET CLR 1.1.4322)

Moziila/5.0 (Macintosh; U; PPC Mac OS X; en-us) AppleWebKit/85.7 (KHTML, вроде Gecko) Safari/85

Когда вы программируете на РНР, то обычно заинтересованы в идентификации User-agent. Информация о сервере, на котором работает программа уже известна. Стандартная PHP-переменная $_SERVER содержит заголовок User-agent. Вы можете получить к ней доступ следующим образом:

$user_agent = $_SERVER['HTTP_USER_AGENT'];

Соседние файлы в папке example1