CGIHTTPServer

注意

CGIHTTPServer模块已被合并到Python 3中。当将源代码转换为Python 3时http.server2to3工具将自动适应导入。

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()函数的实现。

扫码关注云+社区

领取腾讯云代金券