我正在使用CGI.pm模块在Perl CGI中完成作业。在我的代码中,我正在检查cookie。如果cookie存在,我想启动另一个CGI脚本。在其他情况下,我能够使用类似的代码,但在这个例子中,我只获得以下浏览器输出,而不是我正在寻找的重定向。
Refresh: 1; URL=homepage.pl.cgi
Content-Type: text/html; charset=ISO-8859-1
这是我的代码:
#get the cookie
my %SIDhash = cookie('SIDhash');
if ( exists $SIDhash{"SID"} ) {
print header(-refresh=>'0; homepage.pl.cgi');
}
我在这里理解的基本原理是什么?
谢谢, CB
答案 0 :(得分:1)
这应该可以解决问题:
print header(
-refresh => '0; url=homepage.pl.cgi',
-cookie => $cookie,
);
如果要在代码中的各个位置组装标题,请首先将标题组件保存在变量中,例如:
my %headers;
# later...
$headers{-cookie} = $cookie;
# later still:
if (exists $SIDhash{SID})
{
# we want to redirect, so print all headers and we're done.
print header(%headers, -refresh => '0; url=homepage.pl.cgi');
exit;
}
# if we're still here, nothing is printed yet.. continue preparing data and print when ready.
# ...
答案 1 :(得分:-1)
尝试将行更改为
print header(-refresh=>'0; url=homepage.pl.cgi');
据我所知,现在这应该是正确的。
This page on Wikipedia提供有关Refresh和其他重定向方法的信息。
答案 2 :(得分:-1)
我不确定为什么你的刷新不起作用,但听起来它更适合使用:
HTTP/1.1 302 Found
Location: http://www.example.org/
只是一个想法。