Как происходит взаимодействие сервера с браузером?
Когда вводится какой-нибудь URL в строку адреса браузера, браузер извлекает из URL протокол (например, http) и имя сервера. Согласно полученной информации он обращается к указанному серверу. Протокол — это набор правил, согласно которым браузер будет общаться с Web-сервером (если используется протокол http).
Компьютер — это «железо», которое ничего не может сделать без программного обеспечения. На компьютере, к которому обращается браузер должна быть установлена программа -- Web-сервер, которая в действительности будет обслуживать запросы. Когда мы говорим сервер, должны иметь в виду программу, а не компьютер.
Браузер определил, что имя сервера есть в базе данных DNS, узнал его IP-адрес и, используя его, подключился к серверу. Сервер ждет команды от браузера. Браузер посылает запрос — что-то наподобие: «Мне нужен документ /path/docI.html». Сервер просматривает содержимое каталога /path, находит там файл docl .html и возвращает его браузеру, как обыкновенный текст. Кроме текста сервер также возвращает тип документа. Бразуер отображает документы согласно информации о типе, переданной сервером. Например, если сервер скажет, что файл docl.html является текстом, то в окне браузера мы увидим код HTML, но обычно сервер так не делает, и мы видим нормальную Web-страницу — с картинками и форматированием.
Если запрашиваемый документ не найден, сервер может возвратить документ, содержащий сообщение об ошибке или просто код ошибки, например, 500 — внутренняя ошибка сервера. В последнем случае, браузер, получив код ошибки, возвращает встроенное в него сообщение об этой ошибке.
Зачем нужен CGI-интерфейс и какие цели он выполняет?
Интерфейс CGI выполняет функции шлюза (переходника) между различными программами, установленными на Web-сервере, и браузером пользователя. Когда браузер запрашивает определенный ресурс, программа-сервер запускает программу, расположенную в каталоге cgi-bin, а она уже возвращает результат, который передается пользователю.
Примечание. Необходимо отметить, что запросы браузера не всегда обрабатываются cgi-программами. Очень часто запрашиваемые ресурсы выдаются браузеру напрямую. То есть, если браузер запросил "http :/server . ru/path/ picture.gif, то ему и выдается picture . gif безо всяких премудростей (cgi-программ, псевдонимов и т.п).
Использование CGI-программ обычно требуется, когда необходимо в браузере отобразить Web-страницу, сформированную на основе некоторых данных или на основе каких-то действий пользователя на сайте. Например, вы ввели в форму какие-то данные, а на их основе формируется выдаваемая вам страница. Или еще один пример, зачастую сайты создаются сразу на нескольких языках. Так как CGI-программа может по IP-адресу определить вашу страну и сразу отобразить сайт на родном вам языке.
Немного подробнее о CGI
Давайте разберемся, что именно происходит при запуске CGI-программы. CGI-программа, как уже упоминалось, это обычная программа, выводящая что-то. Механизм CGI перенаправляет вывод программы на Web-сервер, а тог, в свою очередь, в браузер пользователя. С точки зрения программы нет ничего необычного — она «думает», что выводит информацию на экран (stdout), даже не подозревая, что ее вывод будет перенаправлен и его увидит весь Интернет.
Правда, есть одно НО. Абсолютно любая программа не может быть CGI-программой, потому что перед своим выводом она должна вывести определенные заголовки сервера — указать хотя бы тип выводимой информации. Например, если мы хотим вывести картинку, мы должны отправить заголовок Content-type: image/gif.
Если CGI-программе нужно передать параметры, то делается это очень просто — как и в случае с обыкновенной программой. Например, нам нужно передать строку запроса came=Denis&ernail=denis@localhostсценарию cgi.exe, для этого нужно вызвать программу cqi.exe с параметром name = Denis Serna il=denis@ localhost: cgi.exe name = Denis&emaiI=denis@localhost
Если программа предназначена для CGI, то нужно позаботиться о взаимодействии с сервером. Простейшее взаимодействие заключается в том, что программист должен знать информацию о сервере. Данная информация передается с помощью переменных окружения. Примерно так работает механизм CGI. Чуть позже мы рассмотрим, как превратить обыкновенную программу на языке С в CGI-программу.