HTTP-запросы и ответы

May 4, 2010 by admin Комментировать »

Как уже говорилось ранее, обмен данными между браузером клиента и Web-сервером происходит по протоколу HTTP (недаром в начале адреса любого Web-сайта ставится префикс http: //, означающий как раз название протокола). Браузер от­правляет запрос, получает ответ от сервера, обрабатывает его и показывает пользо­вателю.

При работе с браузером эта процедура скрыта от пользователя и, чтобы .увидеть все тонкости обмена информацией, нужно обращаться за помощью к дополнитель­ным средствам, таким как telnet.

Рассмотрим пример запроса.

GET / HTTP/1.1 Accept-Language: en-us Connection: Keep-Alive Host: 82.179.73.32

User_Agent- Opera/7.54 (Xll; Linux i686, U) [en]

Эта информация поступит на сервер и обратно может вернуться ответ следую­щего вида.

НТТР/1.1 200 ОК

Server: Apache/1.3.29 (Unix) PHP/5.1.0Ы

Connection: Keep-Alive

Date: Sat, 5 Mar 2005 10:27:16 OMT

Content-Type: text/html

Accept-Ranges: bytes

Content-Length: 8

Last-Modified: Sat 5 Mar 2005 10:27:16 GMT hello?

Вся шапка ответа и является набором заголовков. Если возникнет желание по-эксперементировать с ручным написанием запросов и просмотром полученных HTTP-ответов в "сыром" виде, то можно воспользоваться программой telnet. Она обычно входит в поставку большинства самых популярных систем, таких, напри­мер, как Windows ХР (IMicrosoft Telnet) и Linux.

Для запуска программы необходимо набрать в командной строке команду telnet. На экране появится приглашение:

Microsoft Telnet> в Windows и

telnet> в Linux.

После этого необходимо подключиться к хосту. Здесь мы затрагиваем процесс тестовой разработки, поэтому в качестве эксперементального хоста будем рассмат­ривать локальный сервер localhost, который по умолчанию работает через порт 80. Для подключения необходимо ввести такую команду

open localhost 80

Данная команда указывает на подключение к серверу localhost через порт 80. Если никаких сбоев при подключении не произошло, то telnet позволит вручную ввести запрос к Web-серверу (пример запроса приведен выше). Так как значения многих элементов встроенных массивов, таких как $_SERVER, берутся прямо из за­головков HTTP-запроса, у читателя есть возможность "обмануть" некоторые из них и передать любые другие. Например, элемент $_SERVER[ "HTTP_USER_AGENT" ] по­лучает значение из заголовка User_Agent (в нашем примере его значение равно "Орега/7.54 (XII; Linux 1686; U) [en]"). Рассмотрим обыкновенный скрипт.

<?php

echo $_SERVER["HTTP_USER_AGENT"], ?>

Если в тексте HTTP-запроса указать User_Agenc: MyBrowser /1.0 (MuscDieOS) [en], TO приведенный выше РНР-код получит в качестве значения $_SERVER [‘ HTTP_USER_AGENT’ ] ложную информацию и выведет ее на экран.

Несмотря на такие небольшие хитрости, наиболее популярными заголовками, которые указываются в "сыром" виде, являются заголовки Location и Content-type. В РНР сушествует функция header () для отправки любого "сырого" заголовка браузеру.

Оставить комментарий

микросхемы мощности Устройство импульсов питания пример приемника провода витков генератора выходе напряжение напряжения нагрузки радоэлектроника работы сигнал сигнала сигналов управления сопротивление усилитель усилителя усиления устройства схема теория транзистора транзисторов частоты