» Главная
eXcode.ru » Статьи » Web
» Новости
» Опросы
» Файлы
» Журнал



Пользователей: 0
Гостей: 8





Заголовки, метод GET и POST




Автор: Котеров Д.В.

Задумаемся на минуту, что же происходит, когда мы набираем в браузере строку somestringи нажимаем <Enter>. Браузер посылает серверу запрос somestring. Нет, конечно. Все немного сложнее. Он анализирует строку, выделяет из нее имя сервера и порт (а также имя протокола, но нам это сейчас не интересно), устанавливает соединение с Web-сервером по адресу сервер:порти посылает ему что-то типа следующего:

GET somestring HTTP/1.0

...другаяинформация...


Здесь nозначает символ перевода строки, а — два обязательных символа новой строки, которые являются маркером окончания запроса (точнее, окончания заголовков запроса). Пока мы не пошлем этот маркер, сервер не будет обрабатывать наш запрос.

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

Вот мы и начинаем знакомство с протоколом HTTP. Как видите, он представляет собой ни что иное, как просто набор заголовков, которыми обмениваются сервер и браузер, и еще пару соглашений насчет метода POST, которые мы вскоре рассмотрим.

Не все заголовки обрабатываются сервером — некоторые просто пересылаются запускаемому сценарию с помощью переменных окружения. Переменные окружения представляют собой именованные значения параметров, которые операционная система (точнее, процесс-родитель) передает запущенной программе. Программа может с помощью специальных функций (их мы рассмотрим в следующей главе на примерах) получить значение любой установленной переменной окружения, указав ее имя. Именно так и должен поступать CGI-сценарий, когда захочет узнать значение того или иного заголовка запроса. К сожалению, набор передаваемых сценарию заголовков ограничен стандартами, и некоторые заголовки нельзя получить из сценария никаким способом (ему просто недоступна соответствующая переменная окружения). Такие случаи мы будем оговаривать особо.

Ниже приводятся некоторые заголовки запросов с их описаниями, а также имена переменных окружения, которые использует сервер для передачи их CGI-сценарию. Я указываю заголовки вместе с примерами в том контексте, в котором они могут быть применены, иными словами, вместе с наиболее распространенными их значениями. Так будет несколько нагляднее.

GET

Формат: GET сценарий.параметрыHTTP/1.0 Переменные окружения: REQUEST_URI; в переменной QUERY_STRINGсохраняется значение параметры, в переменной REQUEST_METHOD— ключевое слово GET.

Этот заголовок является обязательным (если только не применяется метод POST) и определяет адрес запрашиваемого документа на сервере. Также задаются параметры, которые пересылаются сценарию (если сценарию ничего не передается, или же это обычная статическая страница, то все символы после знака вопроса и сам знак опускаются). Вместо строки HTTP/1.0может быть указан и другой протокол — например, HTTP/1.1. Именно его соглашения и будут учитываться сервером при обработке данных, поступивших от пользователя, и других заголовков.

Строка сценарий.параметрызадается в том же самом формате, в котором она входит в URL. Неплохо было бы назвать эту строку как-нибудь более реалистично, чтобы учесть возможность присутствия в ней командных параметров. Такое название действительно существует и звучит как URI (Universal Resource Identifier — Универсальный идентификатор ресурса). Очень часто его смешивают с понятием URL (вплоть до того, что это происходит даже в официальной документации по стандартам HTTP). Давайте договоримся, что в будущем я всегда буду называть словом URL полный путь к некоторой Web-странице вместе с параметрами, и условимся, что под словом URI будет пониматься его часть, расположенная после имени (или IP-адреса) хоста и номера порта.

POST

Формат: POST сценарий.параметры HTTP/1.0

Переменная окружения: REQUEST_URI; в переменной QUERY_STRINGсохраняется значение параметры, в переменной REQUEST_METHOD— слово POST.

Этот заголовок используется при передаче данных методом POST. Вскоре мы рассмотрим этот метод подробнее, а пока скажу лишь, что он отличается от метода GETтем, что данные можно передавать не только через командную строку, но и в конце всех заголовков.

Content-type

Формат: Content-Type: application/x-www-form-urlencoded
Переменная: CONTENT_TYPE

Данный заголовок идентифицирует тип передаваемых данных. Обычно для этого указывается значение application/x-www-form-urlencoded, что означает формат, в котором все управляющие символы (отличные от алфавитно-цифровых и других отображаемых) специальным образом кодируются. Это тот самый формат передачи, который используется методами GETи POST. Довольно распространен и другой формат, и называется он multipart/form-data. Мы разберем его, когда будем обсуждать вопрос, касающийся загрузки файлов на сервер.

Хочу обратить ваше внимание на то, что сервер никак не интерпретирует рассматриваемый заголовок, а просто передает его сценарию через переменную окружения.

User-Agent

Формат: User-Agent: Mozilla/4.5 [en] (Win95; I)
Переменная окружения: HTTP_USER_AGENT
Уточняет версию браузера (в данном случае это Netscape Navigator).

Referer

Формат: Referer: URL_адрес
Переменная окружения: HTTP_REFERER

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

Content-length

Формат: Content-length: длина
Переменная окружения: CONTENT_LENGTH

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

Cookie

Формат: Cookie: значения_Cookies
Переменная окружения: HTTP_COOKIE

Здесь хранятся все Cookies в URL-кодировке.

Accept

Формат: Accept: text/html, text/plain, image/gif, image/jpeg
Переменная окружения: HTTP_ACCEPT

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

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





Добавил: LedWormДата публикации: 2006-01-14 20:32:49
Рейтинг статьи:3.00 [Голосов 10]Кол-во просмотров: 7989

Комментарии читателей

Всего комментариев: 16

2018-01-17 19:32:34
Coihfnr
Платим за лайки! - Оплата ежедневно!

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

достаточно просто зарегистрироваться на нашем сервисе. > www.click-likes.tk <

Вывод заработанных средств ежедневно в течении нескольких минут.

2018-01-13 11:08:04
Qzvdcwq
Мы платим за лайки! - Оплата по требованию!

Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > http://click-likes.tk/ <

Вывод заработанных средств ежедневно в течении нескольких минут.

2017-12-24 12:37:19
Zsdnyfv
Платим за лайки! - Оплата сдельная!

Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и получить за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > http://click-likes.tk/ <

Вывод заработанных средств ежедневно в течении нескольких минут.

2017-11-19 16:04:52
Usuftxw
Мы платим за лайки! - Выплаты ежедневно!

Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

достаточно просто зарегистрироваться на нашем сервисе. > http://like.exrabota.ru/ <

Вывод заработанных средств ежедневно в течении нескольких минут.

2017-06-10 18:13:21
wegorrof
Ведущая компания в России и странах СНГ по продаже авиабилетов «Airline»

Крупнейшая международная компания по продаже А/В билетов
срочно набирает сотрудников на постоянную основу для несложной
работы через интернет, с ежедневными выплатами от 11 000 руб.

Работая в нашей компании Вы получаете:

- Соблюдение трудового кодекса
- Полный соцпакет, оплачиваемый отпуск, больничный, санаторий.
- Каждый наш сотрудник на дому гарантированно получает высокий доход. руб. в день.
- Гарантированные стабильные выплаты заработанных денег.
- Выплаты происходят ежедневно на банковские карты или электронные кошельки.

Пройдите регистрацию у нас на сайте. > www.airline-rabota.tk <

Без вложений, опыт и профессиональные навыки не требуются!

2017-06-06 20:45:31
regorrof
Предлагаем Вам работу без вложений, на системе автоматического приёма и обработки заказов.

Мы предоставляем:

- Наш лицезионный софт.
- документы со всей необходимой доп. информацией.
- постоянная техническая поддержка.

Оплата от 5500 в день. Выплаты ежедневно.

Более подробная информация на нашем сайте >> obrabotka.zarplatt.ru <<

2017-06-05 16:02:00
nElenarof
Наш сервис предоставляет настоящие лайки на фото заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > www.oplata-vklike.tk <

Вывод заработанных средств ежедневно в течении нескольких минут.

2017-02-11 09:26:07
npavelrof
Наш сервис предоставляет настоящие лайки на фотографии заказчиков, которые готовы платить за качество.

Именно для этого мы и набираем удалённых сотрудников, которые будут выполнять работу, то есть ставить лайки и зарабатывать за это деньги.

Чтобы стать нашим удалённым сотрудником и начать ставить лайки, зарабатывая при этом 45 рублей за 1 поставленный лайк,

Вам достаточно просто зарегистрироваться на нашем сервисе. > like.zarplatt.ru <

Вывод заработанных средств ежедневно в течении нескольких минут.

2017-02-04 19:05:47
segorrof
Высокооплачиваемая работа или подработка в домашних условиях за компьютером.
Мы предлагаем: Достойная зарплата без задержек, справка 2-НДФЛ, карьерный рост, бесплатное обучение,
свободный график, страховые взносы в Пенсионный фонд, официальный договор (по желанию).
Режим Вашей работы, Вы определяете самостоятельно, в пределах Ваших возможностей.
Ваш возраст и образование значения не имеют.
Обязательные условия: наличие компьютера и интернета.
Ваши действия:
1. На сайте ( www.off-rabota.tk ) скачайте и установите приложение.
2. Ознакомьтесь с содержимым.
3. Пройдите несложную регистрацию.
4. Обязательно, пройдите курсы обучения. (Бесплатно)
5. Начинайте зарабатывать!
Зарплату мы перечисляем только на банковскую карту любой платёжной системы.
(Для работы советуем оформить отдельную карту)
ВНИМАНИЕ! Весь процесс регистрации, обучения совершенно бесплатны. Не попадитесь в руки мошенников!

-----JGHHJ16FU16G1U6F51J6F1J6R1UY6F5Y-----

2012-03-25 22:44:33
torfewsteatte
<a href=http://www.jpsx.com.br/forum/viewtopic.php?f=20&t=79890>i like it</a> I am sorry, that has interfered... But this theme is very close to me. Write in PM. <a href=http://kr-films.com/user/Enhajeniefand/>моя страница в интернете</a>

<a href=http://scholz-net.org/geek-cooking/viewtopic.php?pid=7289#p7289>моя новая страничка</a> I can suggest to visit to you a site, with a large quantity of articles on a theme interesting you. <a href=http://worldbite.net/>блог</a>

<a href=http://yesfiles.ru/user/plailusiseesk/>this site</a> I can suggest to visit to you a site on which there are many articles on this question. <a href=http://www.kotelniki.ru/node/43239>my new blog</a>

<a href=http://ormuz2011.ru/user/graisease/>like it</a> Unfortunately, I can help nothing. I think, you will find the correct decision. <a href=http://play-on-line.ru/forums/showthread.php?p=898112#post898112>russian website</a>

<a href=http://novostii.com/user/invovabaise/>тут</a> You are not right. I am assured. I suggest it to discuss. Write to me in PM, we will communicate. <a href=http://zakachivay.ru/user/DeefZefrake/>страничка</a>

<a href=http://www.bestcasino.0fees.net/user/Tenciptneen/>классный ресурс</a> It is simply magnificent idea <a href=http://zetplay.idhost.kz/user/unsopenoumb/>моя страница в интернете</a>

<a href=http://oxiden.ru/user/Iodifsmeedeem/>my web page</a> Willingly I accept. In my opinion, it is actual, I will take part in discussion. I know, that together we can come to a right answer. <a href=http://kinorim.ru/user/kictprairty/>my website</a>


<a href=http://govnosait.com/93-service-doverie.html>Служба доверия</a> You commit an error. I can prove it. <a href=http://govnosait.com/61-leprikon.html>Леприконы</a>
Ваше имя: *
Текст записи: *
Имя:

Пароль:



Регистрация

Вы жалеете, что Билли уходит на пенсию?
Гореть ему в АДУ!!!
41% (53)
Побыстрее бы ушел!
5% (6)
Уйдет он, придет другой!
28% (36)
А мне все равно, я Mac юзаю!
2% (3)
Жаль, дядю Билла :(
12% (15)
Может он передумает?!
13% (17)

Проголосовало: 130
Чем отличается законченный программист от простого пользователя? Пользователь думает, что в килобайте 1000 байт, а Программист думает, что в километре 1024 метра.
Рейтинг: 3.3/10 (3)
Посмотреть все анекдоты