有关CGI重定向的一般信息

时间:2019-07-18 04:14:36

标签: perl redirect cgi

当我运行重定向cgi脚本(Perl)时,只需执行以下操作:

print "Location: /new/url\n\n";

这可行,但是默认情况下,它显示Status:200 OK。如果我在标题中指定302或301之类的状态,则浏览器将重定向。否则,它仍将加载新URL的内容,而不会在浏览器中更改URL。

我只想了解浏览器如何处理Location:Header,但状态为200,这样做而不使用302或301有什么利弊?

反馈或指向讨论此问题的文章的链接都很好。谢谢。

2 个答案:

答案 0 :(得分:3)

  

我只想了解浏览器如何处理Location:Header,但状态为200,而不使用302或301,这样做的利弊是什么?

Location标头仅在与某些3xx代码结合使用时才导致重定向。此行为在HTTP标准中已明确定义。来自RFC 7231 7.1.2 Location

  

对于201(已创建)响应,“位置”值是指主要      请求创建的资源。 对于3xx(重定向)响应,      位置值是指首选目标资源      自动重定向请求。

换句话说:将Location标头与响应代码200一起使用根本没有任何意义。在这种情况下,Location标头将被浏览器忽略。

答案 1 :(得分:1)

使用redirect() subroutine from CGI.pm使您的生活更轻松。

$ perl -MCGI=redirect -E'say redirect("https://example.com")'
Status: 302 Found
Location: https://example.com