2014-09-24 82 views
1

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

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,图片等相对绝对的URL,但似乎只有绝对的似乎比别人更好。这又是一个问题,因为我也尝试将HTML设置为/的BASE标记,并且它不起作用。图像等解析为cgi-bin/images而不是/ images。所以我将BASE的所有URL设置为绝对可能,导致BASE标记被忽略。因此,我然后设置BASE标签也是主机的完整URL。

回答

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是页面的URL。但我不知道这是否适合你。

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