2015-03-03 2 views
1

Я пишу perl-обработчик для Apache2.mod_perl Как вернуть статус 511?

Это мой конфиг:

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

Мой обработчик должен вернуться к клиенту 511 код HTTP Status. Вы можете прочитать о 511 здесь:

если мой код возврата 505; Я получаю правильный статус 505 HTTP-версия не поддерживается. Но если я положил return 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

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_

+0

Было ли это как и в статье, так и в статье. Теперь я получаю 200 OK с Content-type httpd/unix-directory –

+0

Можете ли вы опубликовать свой код обработчика? – Dre

+0

обновленный корпус вопроса –

0

Я решил эту проблему. Он не имеет ничего общего с ModPerl2, но сам Apache. Это не проблема для Apache 2.4 только 2.2. Изучив исходный код Apache 2.2 и исправляя некоторые строки, чтобы принять 511 (вы можете скопировать/вставить эти строки из источника Apache 2.4), он начинает правильно возвращать код 511.

Смежные вопросы