Шаг 5 - Вывод информации

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

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

Location: URL-адрес ресурса

Под URL-адресом может быть что угодно, от заранее заготовленной страницы ответа, до страницы или файла на чужом сервере. Очень полезная штука для любителей преадресовки :-)

Пример:

Location: http://www.mjk.msk.ru/~dron/88.gif

Второй тип заголовка описывает данные которые будет выводить непосредственно скрипт. Задает их тип, длину и другие вспомогательные параметры. Самый простой заголовок записывается в виде:

Content-type: тип данных

Тип данных создается из двух составляющих: его типа и формата. То есть, сначала указывается один из следующих типов:

Далее через /(слэш) указывается формат данных.

Примеры заголовков:

Content-type: text/html
Content-type: image/gif
Content-type: video/mpeg

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

Каждый параметр указывается в отдельной строке и заканчивается переносом строки \n.

Пример:

Content-type: image/gif
Content-length: 1052

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

 ...
 printf("Content-type: text/html\n");
 printf("\n");
 printf("<html><h1>Simple CGI for example !!!</h1></html>");
 ...

Если отделяющая пустая строка (я ее сделал отдельной строкой в коде) не будет отправлена, то сервер выдаст ошибку 500 Internal Server Error : Bad header.

После отправки заголовка скрипт может приступать к выводу данных, но естественно только в указанном им формате.


Предыдущий Шаг | Следующий Шаг | Оглавление
Автор Кузин Андрей.