python网络浏览器模块可以与CGI一起工作吗?



我正在尝试使用python cgi和Web浏览器模块从html表单提交操作中打开一个url。我能够在本地主机上启动网址 然而python -m webbrowser -t "http://myhost.com/path/to/some/file.html" webbrowser.open(url, new=0, autoraise=True)在我的CGI脚本中,Apache提供了一个空白页,并且没有错误打印到页面上。我的火狐浏览器的位置框显示"http://myhost.com/my_script.cgi?Submit=Submit"而不是目标网址。

如果网络浏览器模块不能在这种情况下使用,我对它的实际用途感到困惑。如果我使用 url 作为表单操作,页面将提供给客户端,但我的脚本需要处理由以前的 html 表单传递的变量以确定 url,然后将该 url 提供给客户端。让我知道我错过了什么,谢谢。

我很确定,是的,你混淆了网络浏览器库应该做什么。如果您在 cgi 中运行 webbrowser 命令,它将尝试在运行 cgi 脚本的服务器上打开 Web 浏览器(作为运行 cgi 的任何用户)。 这可能行不通。 我认为您希望发生的是您的CGI脚本应该向浏览器返回适当的HTTP"命令"以使其重定向。 举个例子:

if "Submit" in form:
   url = "http://www.python.org #or do whatever processing is needed to calculate the new URL
   print "Status: 302" #this tells the browser the result is a redirect
   print "Location: " + url #this tells the browser where to redirect
   print "" #send two new lines to end the HTTP header

请注意,如果您使用的是 django 或其他库(我希望甚至只是 cgi 库计数),可能还有更高级别的方法来做到这一点,但这应该几乎可以在任何地方工作。 你也可以在HTML等中使用META刷新来做一些事情。

最新更新