【问题标题】:mod_perl How to return 511 status?mod_perl 如何返回 511 状态?
【发布时间】:2015-05-04 11:58:57
【问题描述】:

我正在为 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;

【问题讨论】:

    标签: apache perl mod-perl


    【解决方案1】:

    ModPerl 2?

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

    见:http://perl.apache.org/docs/2.0/api/Apache2/RequestRec.html#C_status_line_

    【讨论】:

    • 按照你和文章所说的做了。现在我用 Content-type httpd/unix-directory 得到 200 OK
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-07
      • 2018-05-07
      • 1970-01-01
      • 2017-02-07
      • 1970-01-01
      • 1970-01-01
      • 2015-01-17
      • 2016-11-24
      相关资源
      最近更新 更多