CGIHTTPServer
CGIHTTPServer — CGI-capable HTTP request handler
注意
该CGIHTTPServer
模块已被合并到Python 3中。当将源代码转换为Python 3时http.server
,2to3工具将自动适应导入。
该CGIHTTPServer
模块定义了一个请求处理程序类,接口兼容BaseHTTPServer.BaseHTTPRequestHandler
并继承行为,SimpleHTTPServer.SimpleHTTPRequestHandler
但也可以运行CGI脚本。
注意
该模块可以在Unix和Windows系统上运行CGI脚本。
注意
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脚本。错误501,“只能POST到CGI脚本”,在尝试POST到非CGI URL时输出。
请注意,出于安全原因,CGI脚本将以U nobody用户nobody运行。CGI脚本的问题将被转换为错误403。
例如用法,请参阅该test()
函数的实现。