Структура запроса (Request).
Стартовая строка запроса выглядит следующим образом:
Метод URI HTTP/Версия
Метод- это название запроса. Одно слово заглавными буквами. Наибольшее распространение имеют следующие методы:
GET- запросить содержимое указанного ресурса. Клиент может передавать параметры указанному ресурсу, перечисляя их после символа "?". Пример стартовой строки методаGETс передачей параметров на сервер:
GET /some_resource?param1=value¶m2=value2 HTTP/1.1
Метод GET является идемпотентным, то есть многократный запрос GET с одними и теми же параметрами должен приводить к одним и тем же результатам.
HEAD - то же самое, что и GET, но само содержимое ресурса при этом сервером не передается, передаются только заголовки. Метод позволяет узнать, существует ли запрашиваемый ресурс на сервере. И если да - не менялось ли его содержимое со времени последнего запроса.
POST- применяется для передачи пользовательских данных (параметров) указанному ресурсу. При этом сами передаваемые параметры включаются в тело запроса. При помощи метода POST можно создать ресурс (например, загрузить файл на сервер). В этом случае сервер выдаст ответ 210 (Created) и в заголовке Location будет указан URI созданного ресурса. Метод POST идемпотентным не является, то есть многократное повторение POST с теми же параметрами может приводить к разным результатам.
PUT- загрузка содержимого запроса на указанный ресурс.
DELETE- удалить указанный ресурс.
URI(Uniform Resource Identifier) - путь к запрашиваемому ресурсу (документ, изображение, файл, службу, ящик электронной почты и т.д.) .
Версия- пара разделенной точкой цифр.
Заголовок запроса может иметь следующие поля:
Поля заголовка HTTP-запроса | Значение |
Host | Доменное имя или IP -адрес узла, к которому обращается клиент |
Referer | URL документа, который ссылается на ресурс, указанный в строке состояния |
From | Адрес электронной почты пользователя, работающего с клиентом |
Accept | MIME -типы данных, обрабатываемых клиентом. Это поле может иметь несколько значений, отделяемых одно от другого запятыми. Часто поле заголовка Accept используется для того, чтобы сообщить серверу о том, какие типы графических файлов поддерживает клиент |
Accept-Language | Набор двухсимвольных идентификаторов, разделенных запятыми, которые обозначают языки, поддерживаемые клиентом |
Accept-Charset | Перечень поддерживаемых наборов символов |
Content-Type | MIME -тип данных, содержащихся в теле запроса (если запрос не состоит из одного заголовка) |
Content-Length | Число символов, содержащихся в теле запроса (если запрос не состоит из одного заголовка) |
Range | Присутствует в том случае, если клиент запрашивает не весь документ, а лишь его часть |
Connection | Используется для управления TCP -соединением. Если в поле содержится Close, это означает, что после обработки запроса сервер должен закрыть соединение. Значение Keep-Alive предлагает не закрывать TCP -соединение, чтобы оно могло быть использовано для последующих запросов |
User-Agent | Информация о клиенте |
В текущей версии протокола (HTTP/1.1) в заголовках запроса обязательно должен присутствовать параметр Host, что позволяет организовать виртуальный хостинг. Выражаясь более простым языком, достичь такого состояния, когда на одном физическом IP-адресе одновременно функционируют несколько Web-серверов, не мешаясь друг другу и не пересекаясь.
Пример HTTP-запроса:
GET /thebook/page1.html HTTP/1.1
Host: www.some_library.ru
Поскольку у данного запроса нет тела, то заканчивается он - пустой строкой (см. выше).
- Оглавление
- Введение.
- Предмет рассмотрения данного курса.
- Одно-, двух- и многоуровневые приложения.
- Интернет.
- Адрес в интернете
- 2001:0Db8:11a3:09d7:1f34:8a2e:07a0:765d
- Имя в интернете
- Службы (сервисы)
- Сокета.
- Что такое "сокета" (socket) ?
- Создание серверной сокеты (пример на языке c).
- Сериализация
- Основы верстки: таблицы
- Основы верстки: фреймы
- Основы верстки: позиционирование участков сайта
- Протокол http
- Структура запроса (Request).
- Структура ответа (Response).
- Перспективы развития http.
- Интернет-приложения
- Web-приложения
- Web-сервисы
- Особенности проектирования
- Особенности пользовательского интерфейса
- Программирование интернет-приложений
- Объектно-ориентированное программирование
- Классы и объекты
- Жизненный цикл класса
- Статические члены класса
- Инкапсуляция
- Наследование
- Полиморфизм
- Интерфейсы
- Событийно-ориентированное программирование
- Совместная работа над проектом
- Технологии создания web-клиентов
- Dom (Document Object Model)
- Каскадные таблицы стилей
- JavaScript
- Обфускация и динамическое получение скриптов
- Java Applets
- ActiveX/npapi
- Adobe Flash
- Web-серверы
- Nginx (engine X)
- Технологии, применяемые на стороне сервера
- ИнтерфейсCgi
- КонцепцияMvc
- Сервлеты
- JavaScript
- Хранение данных