Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Вывод, контролируемый сервером



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

Content-type - указывает тип содержимого возвращаемых данных.

Location - Эта директива используется в случае, когда необходимо указать серверу, что возвращается не сам документ, а ссылка на него. Если аргументом директивы является адрес URL, то сервер передаст клиенту указание на перенаправление запроса. Если аргумент представляет собой виртуальный путь, сервер вернет клиенту заданный этим путем документ, как если бы клиент запрашивал его непосредственно.

Status - Эта директива используется для указания серверу HTTP строки состояния, которую он должен переслать клиенту. Формат строки таков: NNN XXXXX, где NNN - это код состояния, состоящий из трех цифр, а XXXXX - текстовая строка с пояснением кода состояния, например, такая: Forbidden (Запрещено).

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

Далее приведена простейшая программа на языке С, которая в ответ на запрос формы, приведенной в разделе «Передача данных шлюзам» выше, отображает на экране клиентского браузера поздравление пользователю.

Эта программа не делает никакой обработки - она просто передает в выходной поток строки с тегами HTML, используя библиотечную функцию printf () языка С. Сервер обрабатывает выходной поток и формирует корректное ответное сообщение HTTP, передаваемое клиентскому браузеру.

Теперь рассмотрим шлюз, который в определенных случаях должен отсылать клиентскому браузеру документ anydoc.txt, хранимый в каталоге /text/ данного сервера. При этом он действует так, как если бы этот документ был непосредственно запрошен клиентским браузером с помощью ссылки на адрес http://www.anyserver.com/text/anydoc.txt. В этом случае, вывод шлюза будет таков.

Наконец, предположим, что шлюз возвращает ссылки на сервер FTP, например, с таким адресом: ftp://ftp.cso.uiuc.edu. Вывод шлюза будет таков.

Программы, реализующие эти возможности, достаточно прозрачны - они просто помещают в поток вывода соответствующие директивы, если обработка входных данных покажет, что в этом имеется необходимость.





Дата публикования: 2014-11-04; Прочитано: 236 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.005 с)...