Python CGI替代PHP的标头功能?

时间:2018-11-16 16:53:54

标签: php python

所以我找到了这个线程:

Python replacement for PHP's header

但是我仍然找不到答案,我不明白第一个答案,因为我不使用Django,而我想使用纯python(我正在使用CGI)

第二个答案也没有提供详细信息,我尝试使用start_response(),但无法将其重定向到我的网址,也许我给了错误的参数

我还找到了另一个主题:

How to redirect a page to another page in python 3 cgi

但是答案仍然不如php标头,因为它会加载整个页面,然后将其重定向到用户可以注意到的位置,标头功能不是这样,并且更快,更干净

我也尝试过webbrowser.open()webbrowser.get().open()

但是问题是,即使我使用了new = 0选项,他们也打开了一个新标签页而不是直接将其加载到那里! (更不用说导致它无法打开IE和chrome的一些奇怪问题了,我们必须提供完整的修复路径)

因此,如果最好的选择是start_response(),有人可以解释我应该写什么吗?

什么等同于此php标头:

header("location: ./index.php?msg=Invalid Username or Password");

2 个答案:

答案 0 :(得分:1)

  

CGI脚本的输出应包括两个部分,分别   用空白行。第一部分包含许多标题,   告诉客户要遵循的数据类型。 Python代码   生成一个最小的标头部分,如下所示:

     
    

https://docs.python.org/2/library/cgi.html

  
print "Location: ./index.php?msg=Invalid+Username+or+Password"
print                               # blank line, end of headers

答案 1 :(得分:0)

要触发重定向,仅设置位置标头是不够的,还必须返回正确的状态码,如下所示:

print("Status: 302")
print("Location: ./index.php?msg=Invalid Username or Password")
print()

在PHP中,您不必显式设置状态,因为如果您指定Location:标头,则标头函数会为您完成设置。

最后一次打印是必需的,因为标题应与响应正文(在您的情况下为空)用空白行分隔。