CGI (Common Gateway Interface)#
CGI (Common Gateway Interface) определяет способ взаимодействия веб-сервера с внешними программами, генерирующими контент. В Tomcat поддержка CGI может быть добавлена, если Tomcat используется в качестве HTTP-сервера. Поддержка CGI реализована с использованием сервлета класса org.apache.catalina.servlets.CGIServlet. Обычно данный сервлет сопоставляется с шаблоном URL /cgi-bin/*. По умолчанию поддержка CGI отключена.
Установка CGI#
Чтобы включить поддержку CGI:
В файле
$CATALINA_BASE/conf/web.xmlесть закомментированные примеры элементовservletиservlet-mapping. Чтобы включить поддержку CGI в веб-приложении, скопируйте данные объявления сервлета иservlet-mappingв файлWEB-INF/web.xmlтребуемого веб-приложения.Раскомментируйте сервлет
servlet-mappingв файле$CATALINA_BASE/conf/web.xml, чтобы включить CGI для всех установленных веб-приложений одновременно.Установите атрибут
privileged="true"для элементаContextтребуемого веб-приложения.
Только привилегированные Context могут использовать CGI-сервлет.
Примечание
Обратите внимание, что изменение глобального файла $CATALINA_BASE/conf/context.xml влияет на все веб-приложения.
Настройка CGI#
Существует несколько параметров инициализации, которые можно использовать для настройки CGI-сервлета:
Параметр |
Описание |
|---|---|
|
Список HTTP-методов, разделенных запятыми. Запросы, использующие один из данных методов, будут переданы CGI-скрипту для генерации ответа. По умолчанию - |
|
Путь поиска CGI, начинающийся с корневого каталога веб-приложения, + |
|
Если аргументы командной строки включены (через |
|
Если аргументы командной строки включены, каждый закодированный аргумент командной строки должен соответствовать данному шаблону, иначе запрос будет отклонен. По умолчанию соответствует допустимым значениям, определенным RFC3875 CGI: |
|
Генерация аргументов командной строки из строки запроса в соответствии с разделом 4.4 RFC3875 CGI. По умолчанию - |
|
Переменная окружения, которая устанавливается для среды выполнения CGI-скрипта. Имя переменной берется из имени параметра. По умолчанию переменные окружения не заданы |
|
Имя исполняемого файла, используемого для запуска скрипта. По умолчанию - |
|
Дополнительные аргументы для исполняемого файла. Они предшествуют имени CGI-скрипта. Значения по умолчанию отсутствуют |
|
Регулярное выражение для выбора HTTP-заголовков, передаваемых CGI-процессу в качестве переменных окружения. По умолчанию - |
|
Кодировка параметров, используемая CGI-сервлетом. По умолчанию - |
|
Передача окружения оболочки из процесса Tomcat в CGI-скрипт. По умолчанию - |
|
Время ожидания завершения чтения |
Выполнение CGI-скрипта зависит от конфигурации CGI-сервлета и того, как запрос сопоставляется с CGI-сервлетом. Путь поиска CGI начинается с корневого каталога веб-приложения + File.separator + cgiPathPrefix. Затем ищется pathInfo, если он не равен null, в противном случае ищется servletPath.
Поиск начинается с первого сегмента пути и расширяется, пока не закончатся сегменты (что приводит к ошибке 404) или не будет найден скрипт. Оставшиеся сегменты пути передаются в переменную окружения PATH_INFO.