Опубликован: 11.08.2008 | Уровень: специалист | Доступ: платный
Лекция 16:

World Wide Web (WWW) — Всемирная паутина

Динамические документы

Динамические документы не существуют в заранее определенном формате. Динамический документ создается веб-сервером всегда, когда браузер запрашивает документ. Когда поступает запрос, веб-сервер рассматривает прикладные программы, чтобы создать динамический документ. Сервер возвращает на выходе программы запрашиваемый документ как отклик, потому что каждый документ создается для каждого запроса, содержание динамического документа может варьироваться от одного запроса к другому. Очень простой пример динамического документа — это получение сервером времени и даты. Время и дата — это тип информации, который динамически изменяется от момента к моменту. Клиент может запросить, чтобы сервер осуществлял управление программой, такой как программа date и UNIX, и посылал результат программы клиенту.

Общий шлюзовой интерфейс

Общий шлюзовой интерфейс (Common Gateway Interface – CGI) – это технология, которая создает и обрабатывает динамические документы. CGI — набор стандартов, которые определяют, как динамический документ должен быть написан, как должны быть поддержаны входные данные для программы и как должен быть использован выходной результат.

CGI – это не новый язык; он позволяет программисту использовать любые несколько языков, таких как C, C++ и языки того же класса. Суть в том, что стандарт определяет набор правил и терминов, которым должен следовать программист.

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

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

Вход

В традиционном программировании, когда параметры выполнены, они могут быть переданы программе. Передача параметров позволяет программисту писать настраиваемую программу, которая может быть использована в различных ситуациях. Например, настраиваемая копия программы может быть написана для любого копирования одного файла в другой. Пользователь может использовать программу для копирования файла с именем x к другому файлу с именем y, передавая x или y как параметры.

Входные данные посылают от браузера к серверу, используя форму. Если информация в форме мала (типа одного слова), она может быть добавлена к URL после знака вопроса. Например, следующий URL переносит форму информации (имя файла – файл1).

http://www.yandex/list/prog.pl?file1

Когда сервер принимает URL, он использует часть URL перед знаком вопроса для доступа к программе, чтобы выполнить ее, и он интерпретирует часть после вопросительного знака ("файл1"), чтобы послать входные данные клиенту. Форма сохраняет эту строку в переменных окружения под именем QUERY_STRING (строка запроса). Когда эта CGI программа выполнена, она может обратиться к этому значению.

Если вход от браузера вводит форму слишком долго, браузер может запросить у сервера посылку формы. Браузер может заполнить форму входными данными и послать ее серверу. Информация в форме может быть использована как входные данные к CGI-программе.

Выход

Идея CGI в целом — выполнить CGI-программу на стороне сервера и послать выходные данные к клиенту (браузеру). Выход — обычно простой текст или текст со структурой HTML; однако выход может быть весьма разнообразен. Он может быть графическими или двоичными данными, кодом состояния, инструкцией для браузера для кэширования (накопления информации в сверхоперативной памяти) или инструкцией серверу, чтобы выслать существующий документ вместо фактического выхода.

Чтобы сообщить клиенту тип документа, CGI-программа должна создать заголовок и "тело". В действительности, выход программы CGI всегда существует в двух частях: заголовок и "тело". Заголовок отделяется пустыми строками от "тела". Это означает, что программа CGI сначала создает заголовок, затем пустые строки, а затем "тело". Хотя заголовок и пустые строки не показываются на браузере экрана, заголовок используется браузером для интерпретации "тела".

Определены несколько различных заголовков для выхода из CGI-программы. Они подобны MIME-заголовкам. Мы коротко перечислим общие из них.

  • CONTENT_LENGTH. Задает длину выходных данных в байтах. Она обычно определяется для двоичных данных (например, для графики). Например, программа с заголовком CONTENT_LEGHT: 2000 означает, что выход содержит 2000 байт двоичных данных.
  • CONTENT_TYPE. Он определяет тип выходных данных. Например, программа с заголовком CONTENET-TYPE: text/plain содержит простой текст, в то время как СONTENT-TYPE: text/html содержит HTML-текст.
  • EXPIRES. Показывает дату и время, когда документ становится далее недействительным.
  • LOCATION. Показывает переназначение адреса документа
  • PRAGMA. Переводит документ для кеширования и обратно.
  • STATUS. Показывает состояние запроса.
Переадресация

Выход CGI-программ может быть адресным файлом. Это называется переадресацией.

Выход программы может быть адресом, чтобы переадресовать запрос к статическому документу. Браузер теперь может использовать этот адрес (URL), который приводит к статическому документу.

Активные документы

Для многих приложений необходимо, чтобы программа выполнялась на стороне клиента. Их называют активными документами. Например, надо выполнить программу, которая из полученного изображения создает анимированную графику на экране или взаимодействует с пользователем. А программа анимации и интерактивного обмена находится на стороне клиента, где происходит анимация и интерактивный обмен. Когда браузер запрашивает активный документ, сервер посылает копию документа в форме побайтного кода. Документ затем выполняется на сайте клиента (браузера). Активный документ в сервере накапливается в форме двоичных кодов. Однако он не создается на сервере тем же самым способом, как это делается в случае динамического документа. Хотя активный документ в сервере не выполняется, он сохраняется как двоичный документ, который восстанавливается клиентом. Когда клиент получает этот документ, он может также сохранить его в собственной области памяти. Потом клиент может работать с документом без применения другого запроса.

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

Технология, использующая сценарий для динамического документа

Проблема CGI-технологии — в неэффективности результата, если часть динамического документа, который должен быть создан, постоянная и не меняется от запроса к запросу. Например, предположим, что мы запросили список запасных частей на определенную марку автомобиля, их характеристики и цены. Хотя характеристики и цены время от времени меняются, наименование, описание, картинки могут оставаться одними и теми же. Если использовать CGI, программа должна каждый раз создавать документ для запроса. Решение этой проблемы заключается в том, чтобы создать файл, содержащий постоянную часть документа, и вложить в исходный код, что имеется переменная часть — характеристики и цены.

Такие действия могут выполняться с помощью специальных языков, например, Java Script, Active Server Pages (ASP) и других.

Протокол передачи гипертекстовых файлов (HTTP)

Протокол передачи гипертекстовых файлов (HTTPHypertext Transfer Protocol) используется в основном для доступа данных на Word Wide Web. Этот протокол передает данные в форме простых текстов, гипертекстов, аудио, видео и так далее. Однако он называется протоколом передачи гипертекстов, потому что его эффективность позволяет использовать его в гипертекстовом окружении, где имеются быстрые переходы от одного документа к другому.

HTTP-функции подобны комбинации FTP и SMTP. Они похожи на FTP, потому что он передает файлы и использует услуги TCP/IP. Однако он гораздо проще, чем FTP, потому что использует только один TCP (хорошо известный порт 80). Нет никакого отдельного соединения управления; между клиентом и сервером передаются только данные.

HTTP похож на SMTP, потому что данные, передаваемые между клиентом и сервером, выглядят точно так же, как SMTP-сообщения. В дополнение, формат сообщений управляется с помощью MIME-подобного заголовка. Однако HTTP отличается от SMTP способом, которым сообщения посылаются от клиента к серверу и от сервера к клиенту. В отличие от SMTP, сообщения HTTP не предназначены для чтения людьми; они читаются и интерпретируются HTTP-сервером и HTTP-клиентом (браузером). SMTP-сообщения сохраняются и передаются, а HTTP-сообщения доставляются непосредственно.

Идея HTTP очень проста. Клиент посылает запрос, который выглядит как почтовое сообщение к серверу. Север посылает ответ, который выглядит как почтовый ответ к клиенту. Сообщения запроса и ответа переносят данные в виде формата, подобного MIME.

Команды от клиента к серверу вставляются в сообщение запроса, похожее на письмо. Содержание затребованного файла или другая информация вставляется в ответное сообщение, подобное письму.

HTTP-переходы

HTTP использует услуги TCP, потому что сам HTTP – протокол, не основанный на смене состояния. Клиент инициализирует переход посылкой сообщения запроса. Сервер отвечает посылкой ответа.

Евгений Виноградов
Евгений Виноградов

Прошел экстерном экзамен по курсу перепордготовки "Информационная безопасность". Хочу получить диплом, но не вижу где оплатить? Ну и соответственно , как с получением бумажного документа?

Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????