HTTP Location: redirect -- 能不能让浏览器的地址栏跟着URL?
HTTP Location: re-direction -- can browsers addr bar be made to follow the URL?
我广泛使用脚本,并使用 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 栏中显示正确的内容。好像要求不高。没有?
要将浏览器重定向到不同的 URL,您需要使用 301 Moved Permanently
。这将导致浏览器获取第二页并显示新的 URL.
例如
sys.stdout.write('HTTP/1.1 301 Moved Permanently\n')
sys.stdout.write('Location: otherplace.cgi\n\n')
raise SystemExit
我广泛使用脚本,并使用 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 栏中显示正确的内容。好像要求不高。没有?
要将浏览器重定向到不同的 URL,您需要使用 301 Moved Permanently
。这将导致浏览器获取第二页并显示新的 URL.
例如
sys.stdout.write('HTTP/1.1 301 Moved Permanently\n')
sys.stdout.write('Location: otherplace.cgi\n\n')
raise SystemExit