Petra: http-Header anzeigen lassen

Hi Leute,

ich hatte am Wochenende das Problem, dass mein Script zur Anzeige des Aktualisierungsdatums nicht richtig ausgeführt wurde (und ein sinnloses Datum anzeigte). MM und Michael Schröpl schrieben mir, dass es am im http-Header nicht mitgeschickten LastModified läge und schickten zum Vergleich einen vollständigen und meinen unvollständigen Header. Ich habe beide Header an meinen Provider weitergeleitet, er teilte mir mit "er hätte was gemacht, es sollte jetzt gehen" - leider tut es das nicht.

Aber genug der Vorrede: ich wüsste gern, wie ich mir http-Header anzeigen lassen kann, um selbst überprüfen zu können, ob LastModified drin ist oder nicht.

MM schrieb, er hätte ein telnet auf meinen Web-Server gemacht. Wie denn, ohne dass er ein Passwort hatte (etwas beunruhigt)? Ich kann auf meinem Windows98-Rechner telnet und ssh ausführen. Was genau muss ich machen?

Ich würde mich freuen, wenn Ihr mir nochmal weiterhelfen könntet, da ich alleine einfach nicht weiterkomme.

Dank im voraus

Petra

  1. Hallo!

    Aber genug der Vorrede: ich wüsste gern, wie ich mir http-Header anzeigen lassen kann, um selbst überprüfen zu können, ob LastModified drin ist oder nicht.

    Versuchs mal hier http://www.schroepl.net/cgi-bin/http_trace.pl

    Ist es das was Du willst?

    Grüße
    Andreas

    1. ich wüsste gern, wie ich mir http-Header anzeigen lassen kann, um selbst überprüfen zu können, ob LastModified drin ist oder nicht.

      Versuchs mal hier http://www.schroepl.net/cgi-bin/http_trace.pl

      Ist es das was Du willst?

      Hallo Andreas,

      neee, ich will nicht Micha Schröpels Header, sondern ganz allgemein wissen, wie mensch sich so was anzeigen lässt, um die Header zu überprüfen, die mein Webserver sendet. Trotzdem danke.

      Petra

      1. ich wüsste gern, wie ich mir http-Header anzeigen lassen kann, um selbst überprüfen zu können, ob LastModified drin ist oder nicht.

        Versuchs mal hier http://www.schroepl.net/cgi-bin/http_trace.pl

        Ist es das was Du willst?

        neee, ich will nicht Micha Schröpels Header, sondern ganz allgemein wissen, wie mensch sich so was anzeigen lässt, um die Header zu überprüfen, die mein Webserver sendet. Trotzdem danke.

        Uups, jetzt war ich wohl etwas voreilig, wahrscheinlich ist, was Du geschrieben hast, genau was ich will, nur ist es ja wohl PHP und das habe ich nicht. Gibt es nicht irgendeine Möglichkeit, die ich mit einem WINDOWS-Rechner ohne PHP ausführen kann?

        Petra

        1. Uups, jetzt war ich wohl etwas voreilig, wahrscheinlich ist, was Du geschrieben hast, genau was ich will, nur ist es ja wohl PHP und das habe ich nicht. Gibt es nicht irgendeine Möglichkeit, die ich mit einem WINDOWS-Rechner ohne PHP ausführen kann?

          Im Kommandozeileninterpreter (a/k/a dosbox):

          telnet http://www.deinedomain.de 80

          Dann
          GET http://www.deinedomain.de/DeineSeite.html HTTP/1.0

          Nach dem GET zweimal enter drücken.
          (je nach verwendetem Telnet-Client muß man die GET-Zeile blind tippen)

          Ersatzweise - falls Du Perl hast, kannst Du auch folgendes Perlscript ausführen (ich hab es als httphead.pl gespeichert, aufgerufen wird es mit einem Parameter: der gewünschten URL):

          #!perl -w

          use strict;
          use warnings;
          use LWP;

          my $ua = new LWP::UserAgent;
          $ua->agent("DummyUserAgentPerlScript/1.0");
          my $req = HTTP::Request->new(HEAD => $ARGV[0]);
          my $res = $ua->request($req);
          print "HTTP Result code: ".$res->code."\n\n";
          print (($res->is_success) ? $res->headers->as_string() : $res->message);

          1. Moin,

            Uups, jetzt war ich wohl etwas voreilig, wahrscheinlich ist, was Du geschrieben hast, genau was ich will, nur ist es ja wohl PHP und das habe ich nicht. Gibt es nicht irgendeine Möglichkeit, die ich mit einem WINDOWS-Rechner ohne PHP ausführen kann?

            Hmm, also Michaels Skript ist a) in Perl und b) funktioniert es sowieso über den Browser, dein Betriebssystem ist also irrelevant.

            telnet http://www.deinedomain.de 80

            mach mal das http:// da weg, das stört nur.

            GET http://www.deinedomain.de/DeineSeite.html HTTP/1.0

            Da kann sogar das http://www.deinedomain.da weg, nur /DeineSeite.html ist nötig.

            Nach dem GET zweimal enter drücken.

            Zuerst musst du (zumindest bei der überwiegenden Anzahl der Webserver) noch eine Zeile mit
            Host: www.deinedomain.de
            eingeben, und erst danach zweimal Enter drücken.

            (je nach verwendetem Telnet-Client muß man die GET-Zeile blind tippen)

            BTW: Beim Windows-Telnet-Client rauscht das in der Regel zu schnell durch. Du kannst dann entweder in den Einstellungen die Zeilenanzahl erhöhen, oder wählst gleich Log starten... und zeichnest die ganze Verbindung auf, um sie später in Ruhe anzuschauen.

            Und nun noch der allgemeine Tipp: Besorg dir ethereal (gibt es auch für Windows) damit kannst du beliebige Netzwerkverbindungen mitschneiden und unter anderem auch vollständig sehen, was sich dein Browser und der Server so erzählen.

            --
            Henryk Plötz
            Grüße von der Ostsee

            * Help Microsoft combat software piracy: Give Linux to a friend today! *

            1. Hallo,

              Zuerst musst du (zumindest bei der überwiegenden Anzahl der Webserver) noch eine Zeile mit
              Host: www.deinedomain.de

              Gibt es dieses Feld nicht erst ab HTTP 1.1?
              Dort _muss_ es vorhanden sein und es _muss_ ignoriert werden, wenn die URI in der Request-Line absolut ist. Wie ist das nun bei HTTP 1.0? In der RFC1945 habe ich nichts dazu gefunden.

              janos

              1. Moin,

                Gibt es dieses Feld nicht erst ab HTTP 1.1?

                Hmm, es steht tatsächlich in RFC 1945 nicht erwähnt. Da du aber in der Regel davon ausgehen kannst, einen Server zu haben der auch HTTP 1.1 versteht und einer der es nicht versteht unbekannte Header sowieso ignoriert, schadet es erstmal nicht.

                Dort _muss_ es vorhanden sein und es _muss_ ignoriert werden, wenn die URI in der Request-Line absolut ist. Wie ist das nun bei HTTP 1.0? In der RFC1945 habe ich nichts dazu gefunden.

                RFC 1945, Abschnitt 5.1.2 sagt, dass die absolute Form (also http://...) nur erlaubt ist, wenn du mit einem Proxy redest. Wenn du es also tatsächlich mit einem HTTP 1.0-Server zu tun hast, kann es sein, dass die absolute Form dich in Schwierigkeiten bringt. RFC 2068, Abschnitt 5.1.2 sagt, dass die absolute Form verwendet werden muß, wenn du mit einem Proxy redest (also die Verwendung bei einem Webserver ist explizit nicht ausgeschlossen) und ein Webserver sie auch akzeptieren muss, obwohl sie in der Regel nicht von einem HTTP 1.1-Client erzeugt werden wird.

                Zusammenfassend:
                | GET http://... HTTP/1.0
                 funktioniert mit HTTP 1.1-Servern und macht mit HTTP 1.0-Servern Probleme
                | GET /... HTTP/1.0
                | Host: ...
                 funktioniert mit HTTP 1.1-Servern und macht mit HTTP 1.0-Servern keine Probleme
                | GET /... HTTP/1.0
                 funktioniert mit HTTP 1.0-Servern und macht evt. mit HTTP 1.1-Servern mit virtuellen Hosts Probleme

                --
                Henryk Plötz
                Grüße von der Ostsee

                * Help Microsoft combat software piracy: Give Linux to a friend today! *

            2. Hallo Henryk,

              telnet http://www.deinedomain.de 80

              mach mal das http:// da weg, das stört nur.

              es hat geklappt!!! Allerdings erst, als ich direkt die IP-Adresse verwendet habe, nicht mit www.meinedomain.de 80, da hat er immer KEINE VERBINDUNG mit ... gesagt.

              Zuerst musst du (zumindest bei der überwiegenden Anzahl der Webserver) noch eine Zeile mit
              Host: www.deinedomain.de
              eingeben, und erst danach zweimal Enter drücken.

              ja, musste ich. Ohne ging es nicht.

              (je nach verwendetem Telnet-Client muß man die GET-Zeile blind tippen)

              ganz schön schwierig ;-)

              BTW: Beim Windows-Telnet-Client rauscht das in der Regel zu schnell durch. Du kannst dann entweder in den Einstellungen die Zeilenanzahl erhöhen, oder wählst gleich Log starten... und zeichnest die ganze Verbindung auf, um sie später in Ruhe anzuschauen.

              Ich habe es im Protokoll aufgezeichnet und habe gefunden, was ich gesucht habe: die http-Header

              Und nun noch der allgemeine Tipp: Besorg dir ethereal (gibt es auch für Windows) damit kannst du beliebige Netzwerkverbindungen mitschneiden und unter anderem auch vollständig sehen, was sich dein Browser und der Server so erzählen.

              Hast Du zufällig noch eine Idee, wo ich das downloaden kann?

              Vielen, vielen, vielen Dank

              Petra
              grüßt aus Berlin

              Grüße von der Ostsee

              * Help Microsoft combat software piracy: Give Linux to a friend today! *

              1. Moin,

                [blind tippen]

                ganz schön schwierig ;-)

                Menü Terminal -> Einstellungen -> [X] Lokales Echo

                Hast Du zufällig noch eine Idee, wo ich das downloaden kann?

                Google ist dein Freund: http://www.ethereal.com/ (direkt die Downloadseite ist http://www.ethereal.com/distribution/win32/)

                --
                Henryk Plötz
                Grüße von der Ostsee

                * Help Microsoft combat software piracy: Give Linux to a friend today! *

          2. Im Kommandozeileninterpreter (a/k/a dosbox):

            telnet http://www.deinedomain.de 80

            es meldet sich der Telnet-Client (Microsoft telnet Version 1.0), wenn ich dann bei VERBINDEN - NETZWERKSYSTEM - http://http://www.meinedomain.de eingebe, kommt KEINE VERBINDUNG zu ...
            Als Terminaltyp habe ich VT100 eingestellt. Muss ich da was anderes nehmen?

            Petra

            Dann
            GET http://www.deinedomain.de/DeineSeite.html HTTP/1.0

            Nach dem GET zweimal enter drücken.
            (je nach verwendetem Telnet-Client muß man die GET-Zeile blind tippen)

            Ersatzweise - falls Du Perl hast, kannst Du auch folgendes Perlscript ausführen (ich hab es als httphead.pl gespeichert, aufgerufen wird es mit einem Parameter: der gewünschten URL):

            #!perl -w

            use strict;
            use warnings;
            use LWP;

            my $ua = new LWP::UserAgent;
            $ua->agent("DummyUserAgentPerlScript/1.0");
            my $req = HTTP::Request->new(HEAD => $ARGV[0]);
            my $res = $ua->request($req);
            print "HTTP Result code: ".$res->code."\n\n";
            print (($res->is_success) ? $res->headers->as_string() : $res->message);

            1. Moin,

              es meldet sich der Telnet-Client (Microsoft telnet Version 1.0), wenn ich dann bei VERBINDEN - NETZWERKSYSTEM - http://http://www.meinedomain.de eingebe, kommt KEINE VERBINDUNG zu ...

              Du musst noch bei Anschluss: die Nummer 80 eingeben.

              --
              Henryk Plötz
              Grüße von der Ostsee

              * Help Microsoft combat software piracy: Give Linux to a friend today! *

        2. Hallo!

          http://www.schroepl.net/cgi-bin/http_trace.pl]

          Uups, jetzt war ich wohl etwas voreilig, wahrscheinlich ist, was Du geschrieben hast, genau was ich will, nur ist es ja wohl PHP und das habe ich nicht. Gibt es nicht irgendeine Möglichkeit, die ich mit einem WINDOWS-Rechner ohne PHP ausführen kann?

          Verstehe ich nicht. Was willst Du denn? Du willst doch nur wissen, was Dein Server für Header sendet, oder? Was da oben steht ist erstmal der Request-Header, den Dein Browser sendet. Dann kannst Du unten eine Adresse eingeben, dann wird ein Request an die eingegebene Adresse geschickt, und ganz unten wird die Antowrt Des Servers angezeigt.

          Sagen wir mal Du wolltest wissen wie der Server forum.de.selfhtml.org antwortet, dann machst Du das so:

          http://www.schroepl.net/cgi-bin/http_trace.pl?url=http%3A%2F%2Fforum.de.selfhtml.org%2F&method=HEAD&version=HTTP%2F1.0

          Oben steht jetzt der Request Header Deines Browsers, darunter der gesendete Request an den Server, und darunter die Antwort des Servers. Geb in das Form Deinen Server ein und gucke was passiert!

          PHP brauch man da nicht. Du kannst Das so direkt in Deinem Browser benutzen.

          Grüße
          Andreas

          1. Sagen wir mal Du wolltest wissen wie der Server forum.de.selfhtml.org antwortet, dann machst Du das so:

            http://www.schroepl.net/cgi-bin/http_trace.pl?url=http%3A%2F%2Fforum.de.selfhtml.org%2F&method=HEAD&version=HTTP%2F1.0

            Oben steht jetzt der Request Header Deines Browsers, darunter der gesendete Request an den Server, und darunter die Antwort des Servers. Geb in das Form Deinen Server ein und gucke was passiert!

            Okay, danke, jetzt habe ich das auch kapiert und es hat geklappt. Ist natürlich viel einfacher, als mit telnet.

            Vielen Dank

            Petra

            1. Hi!

              Okay, danke, jetzt habe ich das auch kapiert und es hat geklappt. Ist natürlich viel einfacher, als mit telnet.

              eben ;-)

              Grüße
              Andreas