Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОТВЕТЫ МИР.doc
Скачиваний:
3
Добавлен:
01.07.2025
Размер:
547 Кб
Скачать
☆

15. Обработка результатов на сервере в сети при передаче данных.

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

Поток данных состоит из 2 частей:

  • заголовка;

  • тела сообщения.

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

Чаще всего в CGI – скрипт добавляются следующие HTTP – заголовки:

  1. Content-type определяет тип и расширение MIME данных, которые скрипт посылает назад браузеру. MIME – техническая спецификация, описывающая передачу мультимедиа-данных с использованием почтовых стандартов Internet. Как правило, CGI – скрипты выдают готовые HTML-документы. В этом случае заголовок Content-type имеет вид: Content-type: text/html.

Иногда CGI – программы могут передавать обычный text, тогда заголовок имеет вид: Content-type: text/plain.

  1. Location может включаться в заголовок, содержит ссылку на другой URL.

  2. Status содержит значение статуса HTTP – это трехцифровой целый код, идентифицирующий результат попытки интерпретации и удовлетворение попытки. Если попытка выполнилась, то Status = 200.

Location (возврат ответа с переадресацией). Если CGI – программа должна переадресовать браузер к другому существующему документу, то это можно сделать, возвратив ответ с переадресацией. Для этого необходимо в заголовке Location поместить полный URL, в результате чего, сервер, встретив данную строку, проигнорирует всю остальную информацию в CGI – скрипте и сгенерирует ответ «попытка переадресации» (код 302).

Получив такой ответ, браузер автоматически обратиться к указанному URL. Сервер WebSite имеет средства, которые называются оптимизацией переадресации, которая позволяет обойтись без переадресации, где это возможно. Но если в документе, который возвращается при использовании средств оптимизации, содержатся относительные ссылки, но если окажутся неправильными.

Браузер будет рассматривать такой документ как CGI – программу, которая сгенерировала заголовок Location. Поэтому текущим URL для него будет URL CGI – программы. Чтобы не было ошибок, помещается в заголовок Location полный URL.

16. Директивы включения на стороне сервера (ssi).

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

Все директивы SSI должны быть оформлены как HTML-комментарии. Обычно сервер передает документы браузеру без обработки. Чтобы осуществить включение элемента в документ, сервер должен произвести в нем поиск специальных директив. Это создает дополнительную нагрузку на сервер.

Поэтому WebSite не производит подобный поиск в обычных HTML-документах.

Пи создании HTML-документов, которые содержат директивы включения на стороне сервера, необходимо дать ему расширение .html-ssi. Обнаружив его, сервер начнет его обработку. Нельзя просмотреть эти документы без WebSite, т.к. функционирование SSI-директив обеспечивается сервером, а при просмотре с жесткого диска браузер директивы просто проигнорирует, т.к. для него это просто HTML-комментарии. Для директив SSI не существует единого стандарта.

Директивы сервера WebSite:

  1. создание счетчика ежедневных посещений: <!- - # daycnt - - >

После полуночи счетчик сбрасывается в нуль. Информация счетчика хранится в файле с именем (имя файла – имя файла с указанной директивой, расширение .html-ssi.ctr

  1. создание счетчика общих посещений: <! - - # totcnt - ->.

Значение счетчика хранится в подобном файле.

Чтобы оба счетчика отображались одновременно, следует включить в документы вместо одной из директив директиву-аналог, имя которой начинается с буквы r.

< ! - - # rdaycnt - - > <! - - # totcnt - -> или

< ! - - # daycnt - - > <! - - # rtotcnt - - >.

Для того, чтобы изменить используемый по умолчанию файл или задать файлы счетчика с другим именем следует применять необязательные параметры данной директивы:

  1. file;

  2. virtual

File задает URL файла – источника.

Virtual задает URL файла счетчика.

3) директива Config: < ! - - # config item = “value” - - >

Она позволяет изменять некие конфигурируемые параметры средств обработки SSI-директив. В одном документе можно указать несколько данных директив. Задаваемые каждой директивой изменения, распространяются на директивы, следующие за ней.

Она не инициирует подстановок текста, поэтому она остается в HTML-документе.

Вместе item могут использоваться следующие значения:

  1. errmsg изменяет текст сообщения об ошибке:

errmsg = “Ошибка” (по умолчанию SSI ERROR)

  1. timefmt – строка формата, которая используется при генерации значения даты и времени (по умолчанию = “% # c”) – длинный формат отображения значений даты и времени). Данный параметр может содержать несколько кодов через запятую:

    • %a – сокращенное название дня недели;

    • %A – полное название;

    • %j – порядковый номер дня в году;

    • %U – порядковый номер недели в году;

    • %c – короткий формат даты

  2. sizefnt – строка формата, которая применяется при отображении значений размеров файлов (по умолчанию - %d – десятичный формат и размер в байтах).

4) директива:

< ! - - # echo var = “name” - - >

Она инициирует включение в документ значения переменной среды или HTTP-заголовка.

Некоторые переменные среды:

  • DATE_GMT – текущая дата и время по Гринвичу;

  • DATE_LOCAL – местное дата и время;

  • LAST_MODIFIED – дата и время последней модификации текущего документа;

  • QUERY_STRING.

Пример:

<! - - # config timefmt = “% # c” - ->

<! - - # echo var = “DATE_LOCAL” - ->

<! - - # config timefmt = “% c” - ->

<! - - # echo var = “DATE_LOCAL” - ->

Вторая строка заменится на:

Sunday, October 29, 1999, 16:43:12

Четвертая строка заменится на:

10/29/99, 16:43:12

  1. директива:

<! - - # exec cgi = “v path” - ->

В ней заменяется выходной информацией CGI – программы. Параметр cgi задают URL CGI-программы. URL не должен содержать имени протокола, имени hosta и номера порта, т.е. адрес должен начинаться со слеша.

6) директива:

<! - - # flastmod file = “path” - ->

2 параметра:

  • file;

  • virtual.

Они заменяются значением даты и времени последней модификации указанного документа. В file – путь к файлу относительно текущего каталога документа, в virtual-URL к файлу.

    1. директива:

<! - - # fsize file = “path” - ->

2 параметра: file и virtual заменяется значением размера указанного документа в байтах.

8) директива:

<! - - # include file = “path” - ->

2 параметра: file и virtual заменяются содержимым указанного документа. Если пытаемся включить неформатированный текст, рекомендуется включить его в тэги <PRE> </PRE>. Можно включать только HTML – документы или неформатированный текст.

9) <! - - # lastzero - - >

Два параметра: file и virtual заменяются значением даты и времени последнего обнуления счетчиков посещения страниц. Обнуление – удаление файла счетчика.

10) <! - - nossi - - > инициирует полное прекращение ssi-обработки документа сервера, т.е. после того как сервер её встретит, оставшийся файл будет передан браузеру без обработки.

Рассмотренные директивы присущи серверу WebSite. При работе с другими серверами необходимо изучить документацию по работе с ним.

Сервер Apache распространен и для него используются директивы Config, fsize, include и некоторые другие:

  1. printenv выводит содержимое переменных окружения в режиме .txt и заключать её в тэги <PRE> и </PRE>;

  2. set позволяет установить значение переменной;

  3. директивы условных операторов:

<! - - # if - - >;

<! - - # elseif - - >;

<! - - # endif - - >.