Россия, г. Санкт-Петербург |
Общие сведения
Главным достижением технологии World Wide Web по праву считают унификацию интерфейса пользователя при работе с информационными ресурсами Internet. Универсальный мультипротокольный браузер, будь то Netscape Navigator или Internet Explorer, позволяет путем выбора гипертекстовой ссылки получить доступ к FTP-архиву, архиву Gopher, новостям из конференции Usenet или отправить письмо по электронной почте. До эпохи Web для каждого из этих ресурсов пришлось бы запускать отдельную программу.
Однако, кроме текстов, которые можно читать, или картинок, которые можно просматривать, существует множество ресурсов, требующих ввода информации в процессе работы с ними. К таким ресурсам, в частности, относятся информационно-поисковые системы, где пользователь должен вводить список ключевых слов, или реляционные (да и любые другие) базы данных, где пользователь может формулировать запросы к отношениям. Более того, для любой страницы, которая требует аутентификации пользователя, необходимо вводить идентификатор и пароль.
На сегодня уже сложился определенный стиль графического интерфейса приложения. Существует достаточно большое число прикладных пакетов, которые позволяют "прилаживать" такой интерфейс к программе. Однако на такое "прилаживание" или прямое программирование уходит до 80% трудозатрат программистов. При этом в большинстве случаев все сводится к разбору введенных параметров с последующей выдачей результатов в виде отформатированного текста.
Форматирование страниц в Web-технологии достигается за счет HTML-разметки. Остается только создать инструмент ввода данных через рабочее окно браузера или через HTML-документ. В 1991 году эта проблема была решена специалистами NCSA. Они разработали и реализовали две взаимосвязанные спецификации: HTML-формы и Common Gateway Interface.
Формы произвели настоящую революцию в HTML-разметке: авторы документов получили возможность создавать сложные шаблоны ввода информации в рамках HTML-страницы, пользователи — эти шаблоны заполнять. При этом авторы форм опирались на свойства HTTP-протокола и универсальный локатор ресурсов URL с учетом того, что при HTTP-обмене можно использовать различные методы доступа к ресурсам. Это позволило сделать механизм интерпретации форм расширяемым и легко приспосабливаемым к дальнейшему развитию Web-технологии. Таким образом, кроме HTTP, можно было использовать и другие протоколы, которые поддерживали универсальный браузер, например mailto.
Common Gateway Interface — это спецификация обмена данными между прикладной программой, выполняемой по запросу пользователя, и HTTP-сервером, который данную программу запускает. До появления CGI новые функции нужно было внедрять непосредственно в сервер. CGI позволила разрабатывать программы независимо от сервера, а механизм передачи им управления и данных был унаследован от программирования в среде командной строки. Последнее резко сократило трудозатраты на разработку приложений, так как не надо было программировать интерфейс пользователя: его функции выполняли формы.
Слушатели данного учебного курса научатся создавать документы с формами, программировать на стороне сервера с использованием CGI и обрабатывать данные, передаваемые браузером серверу. В рамках курса будут подробно рассмотрены различные способы такой обработки, а также основные приемы построения интерактивных страниц Web-узла.
Введение
Обмен данными в Web-технологии подразделяется в соответствии с типами методов доступа протокола HTTP и видами запросов в спецификации CGI.
Основных методов доступа два: GET и POST. Помимо них часто используются HEAD и PUT.
Виды запросов CGI разделяют на два основных MIME-типа: application/x-www-form-urlencoded и multipart/form-data. Второй тип запроса специально создан для передачи больших внешних файлов.
Эту классификацию можно представить в виде таблицы:
Метод | Клиент --> Сервер | Клиент <-- Сервер | |
---|---|---|---|
GET | По умолчанию | Только HTTP-заголовок | HTTP-заголовок и страница, как тело HTTP-сообщения |
isindex | Только HTTP-заголовок (список ключевых слов включен в URL. Слова разделены символом "+". Кодирования кириллицы не производится) | HTTP-заголовок и страница, как тело HTTP-сообщения | |
form-urlencoded | Только HTTP-заголовок (данные из формы включены в URL страницы. Производится кодирование специальных символов и кириллицы) и тело HTTP-сообщения | HTTP-заголовок и страница, как тело HTTP-сообщения | |
POST | form-urlencoded | Только HTTP-заголовок (данные из формы включены в URL страницы. Производится кодирование специальных символов и кириллицы) и тело HTTP-сообщения | HTTP-заголовок и страница, как тело HTTP-сообщения |
form-data | HTTP-заголовок и составное тело HTTP-сообщения. Первая часть тела — данные из формы, для которых производится кодирование, вторая часть тела — присоединенный файл как он есть | HTTP-заголовок и страница, как тело HTTP-сообщения | |
PUT | HTTP-заголовок и документ, как тело HTTP-сообщения | HTTP-заголовок. В качестве тела можно передать комментарий к коду возврата | |
HEAD | HTTP-заголовок | HTTP-заголовок |
При реализации нестандартных методов доступа, например, DELETE, могут быть несколько иные комбинации содержания откликов и ответов.
Мы рассмотрим все эти типы обменов.