2

我有一个简单的 python 模块,它生成一个包含链接列表的网页。该页面通过webbrowser.open('file://' + file.name): 自动在浏览器中打开,这里没有问题。
在这个网页上,当点击一个链接(它有一个类似的 href http://localhost/cgi-bin/script.py?param1=Something)时,它会启动一个 cgi 脚本,该脚本使用传递的值执行一些操作,最后生成一个新的网页,存储在我的机器本地(例如在路径(如/home/user/web/out/)在我正确设置所有 rwx 权限的文件夹中。
好吧,我已经尝试在浏览器中自动打开这个新页面两天了,尝试使用我在文档和论坛中找到的所有解决方案。我试过了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 页面存储在本地有关,但我不知道如何解决这个问题。有人可以指出我正确的方向吗?

4

1 回答 1

0

我记得一个 CGI 脚本不能重定向。

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将其内容复制到标准输出。

于 2013-10-09T20:44:03.000 回答