Приднестровская поддержка XOOPS
Заголовки HTTP предназначены для передачи некоторых дополнительных сведений, например, при запросе файла Web-браузером дополнительно указываются предпочитаемые MIME-типы, поддерживаемые языки и кодировки, информация о самом Web-браузере и т. д. Сервер в свою очередь при выдаче файла указывает MIME-тип файла, дату последней модификации файла, сведения о кодировке, языке и т. д.
Как вы уже знаете, данные формы могут быть отправлены либо методом GET либо методом POST. При методе GET данные формы пересылаются путем их добавления к URL-адресу после знака "?". При методе POST данные передаются после всех HTTP-заголовков. Рассмотрим диалог Web-браузера и Web-сервера более подробно.
Предположим, есть форма:
<form action="test.php" method="GET">
<input type="text" name="text1">
<input type="submit" value="Отправить">
</form>
При заполнении текстового поля и нажатии кнопки Отправить Web-браузер посылает следующий запрос:
GET /test.php?text1=Tekst+v+pole HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/vnd.ms-excel, application/msword, * / *
Referer: http://localhost/test.php
Accept-Language: ru-RU,ru;q=0.5
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
Host: localhost
Connection: Keep-Alive
Обратите внимание на первую строку запроса. В ней первое слово обозначает метод передачи данных. В нашем случае это метод GET. Далее указывается строка запроса:
/test.php?text1=Tekst+v+pole
Здесь указывается путь от корня сайта к файлу-обработчику (test.php). После знака вопроса передается имя поля и его значение (text1=Tekst+v+pole). За строкой запроса указывается название протокола (HTTP/1.1). Доменное имя Web-сайта передается в заголовке Host без указания протокола.
Кроме того, в запросе дополнительно указываются предпочитаемые MIME-типы (заголовок Accept), поддерживаемые языки (заголовок Accept-Language), методы сжатия (заголовок Accept-Encoding), информация о самом Web-браузере (заголовок User-Agent) и т. д.
Если изменить метод передачи с GET на POST, то запрос будет другим:
POST /test.php HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg,
application/vnd.ms-excel, application/msword, * / *
Referer: http://localhost/test.php
Accept-Language: ru-RU,ru;q=0.5
Content-Type: application/x-www-form-urlencoded
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
Host: localhost
Content-Length: 18
Connection: Keep-Alive
Cache-Control: no-cache
text1=Tekst+v+pole
В первой строке указывается метод передачи (POST), путь к файлу-обработчику (test.php) от корня сервера и название протокола (HTTP/1.1).
Сами данные формы передаются после всех заголовков. Обратите внимание: данные формы от заголовков отделяет пустая строка. Длина переданных данных указывается в заголовке Content-Length.
На этот запрос Web-сервер посылает следующий ответ:
HTTP/1.1 200 OK
Date: Wed, 04 Feb 2009 22:05:15 GMT
Server: Apache/2.2.11 (Win32) PHP/5.2.9
X-Powered-By: PHP/5.2.9
Content-Length: 134
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=utf-8
Content-Language: ru
В первой строке ответа сервера указывается название протокола (HTTP/1.1), а затем статус ответа (200) и его текстовое описание (OK). Статус 200 указывает, что запрос был успешно обработан. Перечислим основные коды статуса:
□ 200 — запрос успешно обработан;
□ 301 и 302 — перенаправление на другую страницу;
□ 304 — с момента последнего запроса файл не изменялся;
□ 401 — пользователь неавторизован;
□ 403 — нет доступа. При отсутствии индексного файла в каталоге и отключенной опции Indexes директивы Options генерируется именно этот код;
□ 404 — ресурс не найден;
□ 500 — внутренняя ошибка сервера.
В заголовке Content-Type указываются MIME-тип (text/html) и кодировка передаваемых данных (utf-8). С помощью заголовка Content-Length указывается длина передаваемых данных. Сами данные передаются после всех заголовков. Данные от заголовков отделяет пустая строка.
Чтобы увидеть диалог Web-браузера с сервером, можно, например, воспользоваться модулем Firebug для Firefox. Для этого на вкладке Сеть следует щелкнуть мышью на строке запроса. Результат можно увидеть
на рис. 1.
Рис. 1. Просмотр заголовков в модуле Firebug
Отправитель | Нити |
---|
6 пользователь(ей) активно (3 пользователь(ей) просматривают Инструкции)
Участников: 0 Гостей: 6 далее... |