我正在尝试编写一个perl页面,该页面将http 302响应返回到其他位置,并为该响应添加自定义标头。 所以我想要的http响应应该是这样的:
HTTP/1.1 302 Moved
Date: Sun, 15 Apr 2012 10:59:02 GMT
Server: Apache
Location: http://www.google.com
Content-Length: 396
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Content-Type: text/html; charset=iso-8859-1
CUSTOM_HEADER: CUSTOM_VALUE
我尝试使用CGI:
#!/bin/perl
use strict;
use APR::Request::Apache2;
my $r = shift;
$r->content_type('text/html; charset=utf-8');
$r->headers_out()->add("CUSTOM_HEADER", "CUSTOM_VALUE");
$r->headers_out()->add("Location", "http://www.google.com");
$r->status(302);
我确实得到了302回复谷歌,但没有CUSTOM_HEADER。一旦我通过$r->status(200);
将状态更改为200,我就会得到CUSTOM_HEADER。
那么这个行为怎么样?如何将我的标题添加到302响应?
答案 0 :(得分:2)
您应该使用err_headers_out()
。即使出现错误和重定向,也会打印出来。
答案 1 :(得分:2)
使用$r->err_headers_out->set
或$r->err_headers_out->add
my $r = shift;
$r->content_type('text/html; charset=utf-8');
$r->err_headers_out->set(Location => "http://www.google.com");
$r->status(302);