Python cgi脚本未打开本地目录中的html文件

Python cgi脚本未打开本地目录中的html文件,python,html,redirect,cgi-bin,Python,Html,Redirect,Cgi Bin,我有一个简单的python模块,它生成一个包含链接列表的网页。此页面在浏览器中通过webbrowser.open('file://'+file.name)自动打开:此处没有问题。 在该网页中,当单击链接时(该链接具有类似于的href)http://localhost/cgi-bin/script.py?param1=Something)它将生成一个cgi脚本,该脚本使用传递的值执行一些操作,并最终生成一个新的网页,存储在我的机器本地(例如,在类似于/home/user/web/out/的路径中)

我有一个简单的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>"
打印“”
打印“location.href=”file:///home/user/web/out/abc.html';"
打印“windows.open('file:///home/user/web/out/abc.html');"
我甚至尝试插入一个带有
POST
方法的按钮来触发新页面的打开,但没有成功:我一直得到一个纯空白页面。
值得一提的是,如果我在浏览器中手动打开此
abc.html
页面,它会正确显示


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

我记得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.write或
shutil
将其内容复制到stdout。

我只是猜测,但是:如果你可以重定向到本地文件,那么网站上的每个人都可以从你的计算机上读取所有内容。因此,您可能无法从网站重定向到本地文件。但是您可以用服务器打开本地文件并提供内容。@User-Uhm。。。你所说的“服务内容”是什么意思?实际上,我成功地编写了要在
cgi-bin/out/abc.html
中打开的新网页,但我仍然无法使用脚本打开它,甚至无法重定向到itA cgi脚本。我记得,脚本无法重定向
self.send_response(200,“随后是脚本输出”)
http.server
中。将html文件的内容复制到
stdout
中。未执行此操作。我想尝试创建一个web服务器并将这两件事分开,但我希望它能更快、更容易。您仍然可以修改http服务器。