2013-10-09 162 views
1

不打开HTML文件我有一个生成包含链接列表的网页一个简单的Python模块。此页面通过webbrowser.open('file://' + file.name)在浏览器中自动打开:这里没有问题。
从这个网页,点击链接上时(其中有像http://localhost/cgi-bin/script.py?param1=Something A HREF)它的午餐CGI脚本执行与传递的值,并在年底一些操作产生一个新的网页,在我的机器上本地存储(例如在像/home/user/web/out/这样的路径中),在我正确设置所有rwx权限的文件夹中。
那么,我一直试图在浏览器中自动打开这个新页面两天,尝试使用通过文档和论坛搜索的所有解决方案。我再次尝试webbrowser.open(),但后来我意识到我无法使用它,因为从Web服务器我无法打开新的浏览器窗口本身。然后我试图与重定向,先打印头(print "Content-type: text/html\n\n"),然后Python的CGI脚本在本地目录

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

我只是猜测,但如果你能重定向到本地文件,然后每个人都主办网站将能够从你的电脑读取的所有内容。所以也许你不能从一个网站重定向到本地文件。但是您可以使用服务器打开本地文件并提供内容。 – User

+0

@用户呃...你说的'为内容提供服务'是什么意思?我实际上设法编写了要在'cgi-bin/out/abc.html'中打开的新网页,但是我仍然没有得到脚本来打开它甚至重定向到它。 – Faabiioo

+0

CGI脚本无法重定向我记得。 'http.server'中的'self.send_response(200,“Script output outputs following”)''。 – User

回答

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

+0

将html文件的内容复制到'stdout'没有完成这项工作。我想尝试创建一个Web服务器并将这两件事分开,但我希望它可以更快更容易 – Faabiioo

+0

您仍然可以修改http服务器。 – User