mod_perl如何返回511状态?

时间:2015-03-03 17:49:37

标签: apache perl mod-perl

我正在为Apache2编写perl处理程序。

这是我的配置:

PerlModule xxx::andsf 
<Location / >
  SetHandler perl-script
  PerlHandler xxx::andsf
  PerlSendHeader On
</Location>

我的处理程序需要返回客户端511 HTTP状态代码。 你可以在这里阅读511:

如果我的代码    返回505; 我收到了正确的状态 505 HTTP版本不支持。 但是,如果我把    返回511; 我得到 500 - 内部服务器错误。 似乎Apache忽略了奇怪的错误代码。

任何想法如何返回511?

更新处理程序的代码:

package xxx::andsf;
use Apache2::Const
  qw( :common );
use Apache2::RequestRec ();
use Apache2::RequestIO  ();

sub handler {
  my $r = shift;
  $r->status_line("511 Network Authentication Requred");
  return Apache2::Const::OK;
}
1;

2 个答案:

答案 0 :(得分:2)

ModPerl 2?

您可以使用$r->status_line("511 Network Authentication Requred")然后返回Apache2::Const::OK(0)

请参阅:http://perl.apache.org/docs/2.0/api/Apache2/RequestRec.html#C_status_line_

答案 1 :(得分:0)

我解决了这个问题。 它与ModPerl2无关,而与Apache本身无关。 Apache 2.4只受2.2影响不是问题。 在查看Apache 2.2源代码并修补一些行以接受511(您可以从Apache 2.4的源复制/粘贴这些行)之后,它正确地启动以返回代码511.