HTTP位置:重定向 - 可以使浏览器的地址栏跟随URL吗?

时间:2015-01-31 03:28:45

标签: python http redirect

我广泛使用脚本,并使用Python从执行的脚本回到启动它的页面,或者有时,完全是其他页面。

假设我正在运行一个脚本,我们将其称为“thisplace.cgi”,无论是什么,都执行以下操作:

sys.stdout.write('Location: otherplace.cgi\n\n')
raise SystemExit

它有效 - 我到达那里,otherplace.cgi生成的页面显示正常,从功能上说,一切都很好。

但是。在浏览器的位置栏中,仍会显示“thisplace.cgi”。不是“otherplace.cgi”,这是用户现在所处的位置。

我做了一些谷歌搜索,从我收集的内容(不多......看起来好奇神秘),我最终发送了这个......

sys.stdout.write('HTTP/1.1 300 Multiple Choices\n')
sys.stdout.write('Location: otherplace.cgi\n\n')
raise SystemExit

...但浏览器只是将其视为无效并给我一个错误页面。 CGI环境是Intertubes上的一些共享主机Debian机器。我在OS X下看到了FireFox中的问题。

我误解了300的用途,或者在哪里使用它,或者是什么?或者我完全困惑? :)

我只是希望浏览器在URL栏中显示正确的内容。看起来似乎不是很多要求。否?

1 个答案:

答案 0 :(得分:1)

要将浏览器重定向到其他网址,您需要使用301 Moved Permanently。这将导致浏览器获取第二页并显示新URL。

E.g。

sys.stdout.write('HTTP/1.1 301 Moved Permanently\n')
sys.stdout.write('Location: otherplace.cgi\n\n')
raise SystemExit