Глава 2. Интерфейс CGI и HTTP

Глава 2. Интерфейс CGI и HTTP

Что такое CGI

CGI - (от англ. Common Gateway Interface — «общий шлюзовой интерфейс») - набор соглашений, которые должны соблюдаться Web-серверами, при выполнении ими различных web-приложений. В настоящий момент практически повсеместно используется более быстрый и безопасный вариант интерфейса FastCGI.

Как правило, программы работающие в соответствии с соглашениями CGI, называют сценариями или скриптами. И пишутся на языках интерпретаторах, например PHP.

Механизм, который позволяет формировать документы "на лету", например текущие дату и время на странице.

Секреты URL

Кроме "адреса" странице, в URL могут присутствовать "параметры". Например в domen.zona/page.html?parameters, после вопросительного знака есть строка "parameters", которая в некоторой степени, аналогична командной строке ОС. Она-то и передаётся CGI сценарию.

Если вернуться к примеру со временем на странице, пользователь может его указать например так: 
domen.zona/script.cgi?time+5. Сценарий с именем script.cgi, запустится, получит, проанализирует эту строчку (например создаст переменную time и присвоит ей значение +5).

Параметры сценариев принято указывать именно: значение=переменная!!!

Так же если нам нужно получить несколько параметров, их нужно разделить с помощью символа амперсанда &, например:
domen.zona/script.cgi?time+5&name=vasya.

Способ посылки сценариев, когда данные помещаются в командную строку URL, называется методом GET, даже если нет никаких параметров.
Так же существует метод POST, сценарий которого начнётся сразу после последнего заголовка (маркера \n\n). Используется для обработки больших форм и для эстетических целей (не изменяет URL в отличие от GET).

Заголовки запроса и метод GET

Когда браузер устанавливает соединение с Web-сервером, кроме прочего, он передает ему некие данные - заголовки запроса. Их может быть сколько угодно: версия браузера, ссылку откуда пришел, тип документа, кодировка, куки и пр.. Например:

GET /somedir/somedoc.html HTTP/1.0
User-Agent: Mozilla/2.0
Accept: text/html
Accept: text/plain
Accept: image/gif

Протокол HTTP как раз и задает правила формирования и интерпретации этих заголовков.

Заголовки запросов и ответов CGI, так же примеры представлены в КНИГЕ - стр. 63.

Метод POST

Сервер не интерпретирует POST-данные, а пересылает их непосредственно сценарию.

Зачем нужен метод POST? В основном для того, чтобы передавать большие объемы данных. Например, при загрузке файлов через Web (см. главу 3) или при обработке больших форм.  Так же для эстетических целей т.к. у GET  URL сценария становится очень длинным, а POST-запрос оставляет URL без изменения.

URL кодирование

В методах GET и POST данные доставляются в URL кодированном виде, т.е. все символы в диапазонах 0-32, 128-256 будут перекодированы, например пробел будет знаком +, кириллические символы заменены кодом... 

Формы