所以我找到了这个线程:
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");
答案 0 :(得分:1)
CGI脚本的输出应包括两个部分,分别 用空白行。第一部分包含许多标题, 告诉客户要遵循的数据类型。 Python代码 生成一个最小的标头部分,如下所示:
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:
标头,则标头函数会为您完成设置。
最后一次打印是必需的,因为标题应与响应正文(在您的情况下为空)用空白行分隔。