提供HTML的CGI不呈现

时间:2014-09-24 18:03:03

标签: python html html5 cgi

我有CGI python程序将HTML作为内容(而不是URL)。流程是:

1. open http://jioworld.jioconnect.com/cgi-bin/loginpp.py
2. you get HTML form (since you have not yet login)
3. enter some dummy user and password and submit
4. you stay on same page after submit even though response html is served. So the page (response) is not rendered by browser but cookie is set
5. reload the page (hit refresh/reload)
6. page is rendered

我的问题是:为什么页面不会在步骤4中呈现,重新加载时会在步骤6中呈现。

我希望第4步呈现页面。

我已经尝试了所有链接的相对绝对网址,例如样式表,javascript,图片等,但似乎只有绝对的网站似乎比其他链接更好。这又是问题,因为我也尝试将html的BASE标记设置为/并且它不起作用。图像等解析为cgi-bin / images而不是/ images。所以我将BASE的所有URL设置为绝对可能导致BASE标记被忽略。因此,我将BASE标记设置为主机的完整URL。

1 个答案:

答案 0 :(得分:0)

  

图像等解析为cgi-bin / images而不是/ images。

这很容易解决。当服务器运行您的脚本时,它会将脚本的当前工作目录(CWD)设置为cgi-bin。我相信这是服务器执行此操作的常见约定,尽管我怀疑是否有Apache配置可以更改它。

我没有使用Apache几年,所以我有点生疏,但我偶尔会玩几个基本的Web服务器。其中一个服务器在cgi-bin中启动脚本,另一个在服务器的CWD中启动它,所以我把它放在我的CGI脚本中:

#Change to parent dir if we're in cgi-bin,
if os.path.basename(os.getcwd()) == 'cgi-bin':
    os.chdir('../')  

但我不确定如何使用列表中的第4步解决问题。

通常情况下,您会发送一些像这样的内容

'<meta http-equiv="REFRESH" content="0;url=%s">' % href

到浏览器,其中url是页面的网址。但我不知道这是否适合你。

如果我们能看到你的CGI脚本,或者至少是一个说明问题的简化版本,也许会有所帮助。