hotti: (INFO) Selbstgemachte ServerStati in CGI-Header

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

  1. 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

    --
    Light travels faster than sound - that's why most people appear bright until you hear them speak.
    1. 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

      --
      Expires: ??.??.?????
      1. 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

        1. 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

          --
          Wenn der Mensch zuviel weiß, wird das lebensgefährlich.
          Das haben nicht erst die Kernphysiker erkannt, das wußte schon die Mafia.
          -Norman Mailer
          1. Hi,

            Wie sende ich sowas mit PHP?

            X-Powered-By: Coffee

            Bspw. mit der auf den überraschenden Namen header hörenden Funktion.

            MfG ChrisB

            --
            Light travels faster than sound - that's why most people appear bright until you hear them speak.
            1. 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

              --
              Es wäre dumm, sich über die Welt zu ärgern.
              Sie kümmert sich nicht darum.
              -Marcus Aurelius
          2. Hallo,

            X-Mein-Status-Code: 600
            X-Mein-Status-Hint: Kaputt
            X-Blah: Blupp
            Wie sende ich sowas mit PHP?

            mit der Funktion header().

            X-Powered-By: Coffee

            Dann bitte auch RFC 2324 zu Rate ziehen.

            So long,
             Martin

            --
            Ordnung schaffen heißt, das Eigelb vom Dotter zu trennen.
        2. 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

          --
          Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
          1. 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!

            1. 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".
              1. 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