Python CGIHTTPServer 默认目录

标签 python cgi httpserver cgihttpserver cgihttprequesthandler

我有以下用于处理 CGI 的 HTTP 服务器的最少代码,这些代码来自内胎上的几个示例:

#!/usr/bin/env python

import BaseHTTPServer
import CGIHTTPServer
import cgitb;

cgitb.enable()  # Error reporting

server = BaseHTTPServer.HTTPServer
handler = CGIHTTPServer.CGIHTTPRequestHandler
server_address = ("", 8000)
handler.cgi_directories = [""]

httpd = server(server_address, handler)
httpd.serve_forever()

但是,当我执行脚本并尝试使用 http://localhost:8000/test.py 通过 CGI 在同一目录中运行测试脚本时,我看到了脚本的文本而不是执行的结果。

权限设置正确,测试脚本本身不是问题(因为当脚本驻留在 cgi-bin 中时,我可以使用 python -m CGIHTTPServer 正常运行它)。我怀疑问题与默认的 CGI 目录有关。

如何让脚本执行?

最佳答案

我的怀疑是正确的。派生此代码的示例显示了将默认目录设置为服务器脚本所在目录的错误方法。要以这种方式设置默认目录,请使用:

handler.cgi_directories = ["/"]

警告:如果您没有任何类型的防火墙,这会打开潜在的巨大安全漏洞。这只是一个有启发性的例子。只能极其小心地使用。

关于Python CGIHTTPServer 默认目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17618084/

相关文章:

linux - 在 Bash CGI 中的同一变量中运行两个命令

Node.js + Google App Engine 提供的静态内容

python - 触发 PySide QTabWidget 中选项卡的关闭事件

python - 当分辨率 > 1 时,Tkinter 缩放和 float

具有多重继承的 Python super()

Python 多处理日志错误 - TypeError : an integer is required (got type NoneType)

python - 在 Google App Engine 上使用 python 使用 POST 方法处理 HTML 表单数据

perl - 如何设置 Perl 的 CGI 脚本模块包含路径?

python - 如何在使用 python 的 HTTPServer 时设置 DocumentRoot?

saml - 当 HTTP Server 用于高可用性时 SAML 的行为