Ich habe ein CGI -Programm geschrieben und sende einen Statusfehler mit dem HTTP-Header an den Client. aber wenn ich versuchte, mod_perl zu verwenden, antwortet es nur mit 200 OK-Status. Wie kann ich einen benutzerdefinierten Statuscode senden?
Hier ist der Code, wenn ich mit dem benutzerdefinierten Statusfehler antworten möchte:
%Vor% BEARBEITEN :
Hier ist der Code:
BEARBEITEN 2
geben einige weitere Informationen:
wenn ich den Befehl curl -v 192.168.1.212/mymodperl/test.pl
in der Shell verwende.
Hier ist die Antwort:
Von Ссылка können Sie einen Statuscode festlegen
%Vor%BEARBEITEN: Erläuterung
Aus Ссылка
%Vor%Was sind Handler?
Apache unterscheidet zwischen zahlreichen Phasen, für die es Hooks bereitstellt (weil die C-Funktionen ap_hook_ genannt werden), wo Module verschiedene Callbacks verbinden können, um das Standardverhalten des Webservers zu erweitern und zu ändern. mod_perl stellt eine Perl-Schnittstelle für die meisten verfügbaren Hooks zur Verfügung, so dass mod_perl Module-Writer das Apache-Verhalten in Perl ändern können. Diese Callbacks werden normalerweise als Handler bezeichnet. Daher sehen die Konfigurationsanweisungen für die mod_perl-Handler wie folgt aus: PerlFooHandler, wobei Foo einer der Handler-Namen ist. Beispielsweise konfiguriert PerlResponseHandler den Antwort-Callback.
Ein typischer Handler ist einfach ein Perl-Paket mit einer Handler-Subroutine. Zum Beispiel:
%Vor%Dieser Handler gibt einfach das aktuelle Datum und die aktuelle Uhrzeit als Antwort zurück.
Da dies ein Antwort-Handler ist, konfigurieren wir ihn in httpd.conf:
%Vor%Da der Antworthandler für einen bestimmten Ort konfiguriert werden sollte, schreiben wir einen vollständigen Konfigurationsabschnitt:
Wenn eine Anforderung an Ссылка gesendet wird, wird dieser Antworthandler ausgeführt und eine Antwort mit der aktuellen Uhrzeit wird an den Client zurückgegeben.