Alexander (HH): (INFO) Selbstgemachte ServerStati in CGI-Header

Beitrag lesen

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

--
Today I will gladly share my knowledge and experience, for there are no sweeter words than "I told you so".