Python cgi脚本没有在本地目录中打开html文件

时间:2013-10-09 08:34:13

标签: python html redirect cgi-bin

我有一个简单的python模块,可以生成一个包含链接列表的网页。此页面将在浏览器中通过webbrowser.open('file://' + file.name)自动打开:此处没有任何问题 在这个网页上,当点击一个链接(有一个类似http://localhost/cgi-bin/script.py?param1=Something的href)时,它会使用传递的值执行某些操作的cgi脚本,并在最后生成一个新的网页,存储在我的本地在我正确设置所有rwx权限的文件夹中的机器(例如,在/home/user/web/out/之类的路径中) 好吧,我一直试图在浏览器中自动打开这个新页面两天,尝试使用我在搜索文档和论坛中搜索的所有解决方案。我再次尝试使用webbrowser.open(),但后来我意识到我无法使用它,因为从Web服务器我无法打开一个新的浏览器窗口。然后我尝试重定向,首先打印标题(print "Content-type: text/html\n\n")然后

print "Status: 302 Moved"
print "Location: file:///home/user/web/out/abc.html\n\n"`

但这只是一个简单的空白页面。我尝试了其他重定向解决方案,比如

print "<meta http-equiv='refresh' content='0' url='file:///home/user/web/out/abc.html'>"
print "<script type="text/javascript">location.href='file:///home/user/web/out/abc.html';</script>"
print "<script type="text/javascript">windows.open('file:///home/user/web/out/abc.html');</script>"

我甚至尝试使用POST方法插入一个触发新页面打开的按钮,但没有成功:我一直收到一个简单的空白页面。
值得一提的是,如果我在浏览器中手动打开此abc.html页面,则会正确显示。

我认为这与我从Web服务器打开的html页面本地存储这一事实有关,但我不知道如何解决这个问题。有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

CGI-Script无法重定向我记得。

Note that status code 200 is sent prior to execution of a CGI script, so
scripts cannot send other status codes such as 302 (redirect).

这是一些代码:

self.send_response(200, "Script output follows")

模块:http.server(Python 3)

但您可以打开该文件并使用sys.stdout.writeshutil将其内容复制到stdout。