- •Общее представление
- •Браузеры
- •[Править]Версии
- •Iso/iec 15445:2000[4] (так называемый iso html, основан на html 4.01 Strict) — 15 мая 2000 года.
- •[Править]Браузерные войны
- •1.3 Структура запроса
- •2 Метод get
- •4. Постскриптум.
- •Пример 7.1.
- •Ie: Internet Explorer, f: Firefox, o: Opera, w3c: стандарт
- •Что такое ajax ? Пример реализации.
- •Смысл ajax - в интеграции технологий
- •Пример. Gmail.
- •Синхронная модель vs Асинхронная модель
- •Синхронная и асинхронная модель в ajax
- •Особенности асинхронной модели
- •Асинхронный drag'n'drop.
- •[Править]Обзор
- •Inline-стилей, когда в html-документе информация стиля для одного элемента указывается в его атрибуте style.
- •[Править]css-вёрстка
1.3 Структура запроса
Рассмотрим, из чего состоит HTTP запрос. Все достаточно просто. Начнем с того, что HTTP запрос — это вполне осмысленный текст. Из чего же он состоит в общем случае? Будем рассматривать протокол HTTP 1.0. Итак:
Request-Line [ General-Header | Request-Header | Entity-Header ]\r\n[ Entity-Body ]
Request-Line — строка запроса
Формат: "Method Request-URI HTTP-Version\r\n"
Method — метод, которым будет обрабатываться ресурс Request-URI, может быть GET, POST, PUT, DELETE или HEAD.
Request-URI — относительная или абсолютная ссылка на страницу с набором параметров, например, /index.html или http://www.myhost.ru/index.html или /index.html?a=1&b=qq. В последнем случае серверу будет передан запрос с набором переменных a и b с соответствующими значениями, а знак "&" — амперсант служит разделителем между параметрами.
HTTP-Version — версия HTTP протокола, в нашем случае "HTTP/1.0".
Нам крайне интересны методы обработки GET и POST. Методом GET можно просто передать параметры в скрипт, а методом POST можно эмулировать submit формы.
Для метода GET, Request-URI может выглядеть, например, так: "/index.html?param1=1¶m2=2".
General-Header — главная часть заголовка. Формат: [Date: value\n | Pragma: no-cache\n] Может иметь только два параметра: Date или Pragma. Date — дата по Гринвичу в формате "День недели, Число Месяц Год ЧЧ:ММ:СС GMT", например, "Tue, 15 Nov 1994 08:12:31 GMT" — дата создания запроса. Pragma может иметь одно значение no-cache, которое запрещает кэширование страницы.
Request-Header — часть заголовка, описывающая запрос. Request-Header может иметь следующие параметры: Allow, Authorization, From, If-Modified-Since, Referer, User-Agent. В данной главе мы не будем рассматривать параметр Autorization, так как он используется для доступа к закрытым ресурсам, что требуется не так уж часто. Вы можете самостоятельно изучить формирование заголовка для авторизованного доступа на сайте www.w3c.org.
Allow — задает допустимые методы обработки. Формат: "Allow: GET | HEAD\n". Параметр игнорируется при указании метода обработки POST в Request-Line. Задает допустимые методы обработки запроса. Прокси сервера не модифицируют параметр Allow и он в неизменном виде доходит до сервера.
From — e-mail адрес, пославшего запрос. Формат: "From: adderss\r\n". Например, "From: myname@mailserver.ru\r\n".
If-Modified-Since — указывает, что запрос не модифицировался с такого-то времени. Формат: "If-Modified-Since: date\r\n" Используется только для метода обработки GET. Дата указывается по Гринвичу в таком же формате, как и для параметра Date в General-Header.
Referrer — абсолютная ссылка на страницу, с которой произошла инициация запроса, т. е. ссылка на страницу, с которой пользователь перешел на нашу. Формат: "Referrer: url\n". Пример: "Referrer: www.host.ru/index.html\n".
User-Agent — тип браузера. Например: "User-Agent: Mozilla/4.0\n"
Entity-Header — часть заголовка, описывающая данные Entity-Body. В данной части запроса задаются параметры, которые описывают тело страницы. Entity-Header может содержать следующие параметры: Allow, Content-Encoding, Content-Length, Content-Type, Expires, Last-Modified, extension-header.
Allow — параметр аналогичный Allow из General-Header.
Content-Encoding — тип кодирования данных Entity-Body. Формат: "Сontent-Encoding: x-gzip | x-compress | другой тип\n". Пример: "Сontent-Encoding: x-gzip\n". Символ "|" означает слово "или", то есть то или то или то и.т.д. Другой тип может указывать на способ кодирования данных, например, для метода POST: "Сontent-Encoding: application/x-www-form-urlencoded\n".
Content-Length — количество байт, пересылаемых в Entity-Body. Значение Content-Length имеет совсем другой смысл для данных, пересылаемых в формате MIME, где он выступает как параметр описания части данных — "external/entity-body". Допустимыми являются целые числа от нуля и больше. Пример: "Content-Length: 26457\n".
Content-Type — тип передаваемых данных. Например: "Content-Type: text/html\n".
Expires — Время, когда страница должна быть удалена из кэша браузера. Формат: "Expires: date\n". Формат даты алогичен формату даты для параметра Date из General-Header.
Last-Modified — время последнего изменения пересылаемых данных. Формат: "Last-Modified: date\n". Формат даты алогичен формату даты для параметра Date из General-Header.
Extention-header — часть заголовка, которая может предназначаться, например, для обработки браузером, или другой программой, которая принимает документ. В данной части можно описывать свои параметры в формате "ParameterName: parametervalue\n". Данные параметры будут игнорироваться, если программа-клиент не знает, как их обработать. Например: "Cookie: r=1\r\n" — устанавливает всем известные печеньки для страницы.
А теперь после таких страшных слов давайте попробуем немного успокоиться и понять, что же нам надо? Понимать мы естественно будем на примерах.
Давайте представим, что нам надо получить страницу с сайта, передав Cookies (Печеньки), иначе нас просто пошлют как незванных гостей, и более того, известно, что на данную страницу пускают только после того, как Вы побывали на главной странице сайта.