CGIHTTPServer — Обработчик HTTP-запросов, поддерживающий CGI
Примечание
Модуль CGIHTTPServer был объединён в http.server в Python 3. Инструмент 2to3 автоматически адаптирует импорты при преобразовании ваших источников в Python 3.
Модуль CGIHTTPServer определяет класс обработчика запросов, совместимый с BaseHTTPServer.BaseHTTPRequestHandler и наследующий поведение от SimpleHTTPServer.SimpleHTTPRequestHandler, но также может запускать CGI-скрипты.
Примечание
Этот модуль может запускать CGI-скрипты на системах Unix и Windows.
Примечание
CGI-скрипты, запущенные классом CGIHTTPRequestHandler, не могут выполнять перенаправления (HTTP-код 302), потому что код 200 (вывод скрипта следует) отправляется до выполнения CGI-скрипта. Это предотвращает установку кода состояния.
Модуль CGIHTTPServer определяет следующие классы:
-
class CGIHTTPServer.CGIHTTPRequestHandler(request, client_address, server) -
Этот класс используется для предоставления файлов или вывода CGI-скриптов из текущей директории и ниже. Обратите внимание, что сопоставление иерархической структуры HTTP с локальной структурой директорий точно такое же, как в
SimpleHTTPServer.SimpleHTTPRequestHandler.Однако класс запустит CGI-скрипт вместо того, чтобы предоставить его как файл, если он определит его как CGI-скрипт. Используются только CGI-скрипты на основе директорий — другая распространённая конфигурация сервера состоит в том, чтобы обрабатывать специальные расширения как обозначение CGI-скриптов.
Функции
do_GET()иdo_HEAD()изменены для запуска CGI-скриптов и предоставления вывода вместо файлов, если запрос ведёт к местоположению ниже директорииcgi_directories.Класс
CGIHTTPRequestHandlerопределяет следующие данные члена:-
cgi_directories -
По умолчанию
['/cgi-bin', '/htbin']и описывает каталоги, которые должны рассматриваться как содержащие CGI-скрипты.
Класс
CGIHTTPRequestHandlerопределяет следующие методы:-
do_POST() -
Этот метод обслуживает запросы типа
'POST', разрешённые только для CGI-скриптов. При попытке отправки POST-запроса на не-CGI-URL выводится ошибка 501, «Можно отправлять только POST-запросы на CGI-скрипты».
-
Обратите внимание, что CGI-скрипты будут выполняться с UID пользователя nobody по соображениям безопасности. Проблемы с CGI-скриптом будут переведены в ошибку 403.
Пример использования см. в реализации функции test().
См. также
-
ModuleBaseHTTPServer -
Реализация базового класса для веб-сервера и обработчика запросов.
© 2001–2020 Python Software Foundation
Licensed under the PSF License.
https://docs.python.org/2.7/library/cgihttpserver.html