(INFO) Selbstgemachte ServerStati in CGI-Header
hotti
- webserver
4 ChrisB0 hotti0 Pragma
hi,
das Thema hatten wir hier schon, die Frage blieb offen: Was passiert, wenn ich einen Serverstatus sende, der nicht RFC-gerecht ist (oder so ähnlich).
Genauer: Ich wollte der Einfachheit halber die status_line für meine eigenen Zwecke missbrauchen. So in etwa:
print "Status: 600 Bereit\n";
print "Status: 601 Parameter x fehlt\n";
print "Status: 602 Parameter y fehlt\n";
print "Status: 603 Kann nicht in Verzeichnis schreiben\n";
print "Status: 666 Fertig\n";
und danach umleiten.
Anwort: Machs nicht. Der Apache quittierte all diese untauglichen Versuche mit einem
Status: 200 Assumed
Hotte
Hi,
das Thema hatten wir hier schon, die Frage blieb offen: Was passiert, wenn ich einen Serverstatus sende, der nicht RFC-gerecht ist (oder so ähnlich).
Genauer: Ich wollte der Einfachheit halber die status_line für meine eigenen Zwecke missbrauchen.
Missbrauche nicht den HTTP Statuscode, sondern nutze eigene mit "X-" beginnende Header, wenn du Applikationsinformationen übermitteln willst, für die sich sonst in HTTP kein sinnvollerer Übertragungsweg findet.
MfG ChrisB
Hi Chris,
Genauer: Ich wollte der Einfachheit halber die status_line für meine eigenen Zwecke missbrauchen.
Missbrauche nicht den HTTP Statuscode, sondern nutze eigene mit "X-" beginnende Header, wenn du Applikationsinformationen übermitteln willst, für die sich sonst in HTTP kein sinnvollerer Übertragungsweg findet.
Ja, danke, hab ich auch schon registriert für besondere Verwendung (mein Downloadangebot). Ich lese ja schließlich mit hier ;-)
Content-Type: x-save/as
Hotti
Ja, danke, hab ich auch schon registriert für besondere Verwendung (mein Downloadangebot). Ich lese ja schließlich mit hier ;-)
Content-Type: x-save/as
WTF?!
ChrisB meinte sowas hier:
X-Mein-Status-Code: 600
X-Mein-Status-Hint: Kaputt
X-Blah: Blupp
hi $name,
X-Mein-Status-Code: 600
X-Mein-Status-Hint: Kaputt
X-Blah: Blupp
Wie sende ich sowas mit PHP?
X-Powered-By: Coffee
gruss
shadow
Hi,
Wie sende ich sowas mit PHP?
X-Powered-By: Coffee
Bspw. mit der auf den überraschenden Namen header hörenden Funktion.
MfG ChrisB
hi $name,
Wie sende ich sowas mit PHP?
X-Powered-By: Coffee
Bspw. mit der auf den überraschenden Namen header hörenden Funktion.
oh, ok, danke ihr beiden...die kannte ich zwar (und nutze sie ab und zu), aber das ich diese dazu miß äh gebrauchen kann eigen kreationen zu senden war mir neu....
gruss
shadow
Ja, danke, hab ich auch schon registriert für besondere Verwendung (mein Downloadangebot). Ich lese ja schließlich mit hier ;-)
Content-Type: x-save/as
WTF?!
ChrisB meinte sowas hier:
X-Mein-Status-Code: 600
X-Mein-Status-Hint: Kaputt
X-Blah: Blupp
Jaja, schon klar. In die Header kannste eigentlich alles x-reinpacken. Nur eben nicht in die Status_Line.
Btw., Content-Type ist auch ein Header-Field.
Hotti
Jaja, schon klar. In die Header kannste eigentlich alles x-reinpacken. Nur eben nicht in die Status_Line.
Sicher doch, man muss dem verwendeten Webserver nur seine Besserwisserei abgewöhnen. Sinnfrei bliebe es dennoch.
Btw., Content-Type ist auch ein Header-Field.
Danke für die Erleuchtung!
Moin Moin!
Jaja, schon klar. In die Header kannste eigentlich alles x-reinpacken. Nur eben nicht in die Status_Line.
Sicher doch, man muss dem verwendeten Webserver nur seine Besserwisserei abgewöhnen.
Das ist in dem Fall keine Besserwisserei, sondern Spezifikation: Ein CGI *KANN* einen gültigen Status-Header zurückliefern, *MUSS* es aber nicht. Wird kein *GÜLTIGER* Status-Header geliefert, ergänzt der HTTP-Server automatisch einen 200er-Header.
Mit dem Header "Status: 666 Fertig" hat das CGI *KEINEN* gültigen Status-Header geliefert, denn der Status darf laut HTTP-RFC nur mit Ziffern von 1 bis 5 beginnen. Also wird stattdessen ein 200er-Header generiert, der den kaputten Status aus dem CGI überschreibt.
Wenn das CGI selbständig eine HTTP-Response generieren will, ohne dass der HTTP-Server dazwischenfunkt, weil er die Header parst, muß der Server für dieses CGI im Non-Parsed-Header-Modus laufen, im Regelfall muß also der Dateiname des CGI-Executables mit "nph-" beginnen. Auch das ist spezifiziert, und in dem Fall kann das CGI durchaus mit "HTTP/1.1 666 Fertig" antworten. Es könnte sogar mit "HTTP/47.11 9876.9 EC Cash Payment Required" antworten, ohne dass der Server auch nur ein Bit auf dem Weg zum Client ändern würde. Ob der Client mit so einer Antwort etwas anfangen kann, steht natürlich auf einem ganz anderen Blatt.
Alexander
moin,
Wenn das CGI selbständig eine HTTP-Response generieren will, ohne dass der HTTP-Server dazwischenfunkt, weil er die Header parst, muß der Server für dieses CGI im Non-Parsed-Header-Modus laufen,[..]
Vielen Dank Alexander,
wieder was dazu gelernt.
Horst