import http.server http.server.CGIHTTPRequestHandler(request, client_address, server)
request
- запрос,client_address
- кортеж формы (host, port)
,server
- экземпляр сервера.Класс CGIHTTPRequestHandler()
модуля http.server
используется для обслуживания файлов или вывода сценариев CGI, расположенных в текущем каталоге. Обратите внимание, что сопоставление иерархической структуры HTTP с локальной структурой каталогов выполняется точно так же, как в SimpleHTTPRequestHandler
.
Примечание. Сценарии CGI, запущенные классом CGIHTTPRequestHandler
, не могут выполнять перенаправления (код HTTP 302), потому что код 200 (вывод сценария следует ниже) отправляется до выполнения сценария CGI. Код состояния прерывается.
Если класс предположит, что текущий файл - это сценарий CGI, то он будет запускать сценарий CGI вместо того, чтобы обслуживать его как файл. Используются только CGI на основе каталогов - другая распространенная конфигурация сервера - обрабатывать специальные расширения как обозначающие сценарии CGI.
Методы .do_GET()
и .do_HEAD()
модифицируются для запуска сценариев CGI и обслуживания вывода вместо обслуживания файлов, если запрос ведет куда-то ниже (внутрь) пути cgi_directories
.
CGIHTTPRequestHandler
.Класс CGIHTTPRequestHandler
определяет следующий элемент данных:
CGIHTTPRequestHandler.cgi_directories
:Атрибут CGIHTTPRequestHandler.cgi_directories
по умолчанию - это ['/cgi-bin', '/htbin']
и описывает каталоги, которые следует рассматривать как содержащие сценарии CGI.
Класс CGIHTTPRequestHandler
определяет следующий метод:
CGIHTTPRequestHandler.do_POST()
:Метод CGIHTTPRequestHandler.do_POST()
обслуживает тип запроса POST, разрешенный только для сценариев CGI.
При попытке выполнить POST-запрос для URL-адреса, отличного от CGI сценария, будет выводится ошибка HTTP 501.