我有一个简单的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页面本地存储这一事实有关,但我不知道如何解决这个问题。有人能指出我正确的方向吗?
答案 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.write
或shutil
将其内容复制到stdout。