Andreas Wolf: Server Response Header

Hallo,
weiter unten hatte ich bereits eine ähnlich Frage unter (CGI) gestellt, ohne dass mir jemand bis jetzt helfen konnte. Deshalb versuch ich es nochmal in anderen Worten:

Wie muss der Server Response Header den der Webserver (selbst geschriebener Server) schicken soll aussehen, wenn ich Felder auf einer Html-Page aktualisieren will?
Ein Standard-Response für das schicken einer Html-Page sieht z.B. so aus:

HTTP/1.1 200 OK
Date: Fri, 31 Jan 2003 06:54:40 GMT
Accept-Ranges: bytes
Server: MyWebServer
Content-Length: 1180
Content-Type: text/html
Last-Modified: Fri, 31 Jan 2003 06:54:40 GMT
Client-Date: Sat, 04 Mar 2002 13:39:02 GMT
Client-Peer: 127.0.0.1:80

Aber jetzt will ich ja keine neue Html-Page schicken sondern nur die Felder, so dass am schluss z.B. Feld1=wert&Feld2=wert usw. stehen muss.
Kann mir hier jemand weiterhelfen?

Gruß Andreas

  1. Hallo Andreas,

    weiter unten hatte ich bereits eine ähnlich
    Frage unter (CGI) gestellt, ohne dass mir
    jemand bis jetzt helfen konnte.

    Dann solltest du nicht nocheinmal posten, sondern
    deine Frage im selben Thread besser erklaeren.

    Wie muss der Server Response Header den der
    Webserver (selbst geschriebener Server)
    schicken soll aussehen, wenn ich Felder auf
    einer Html-Page aktualisieren will?

    Was fuer Felder? Inwiefern Aktualisieren? Was
    genau moechtest du erreichen?

    Ein Standard-Response für das schicken einer
    Html-Page sieht z.B. so aus:

    Er *kann* so aussehen. Er koennte auch so
    aussehen:

    HTTP/1.1 304 Not Modified
    Date: Fri, 31 Jan 2003 06:54:40 GMT
    Accept-Ranges: bytes
    Server: MyWebServer
    Content-Type: text/html
    Last-Modified: Fri, 31 Jan 2003 06:54:40 GMT

    Aber jetzt will ich ja keine neue Html-Page
    schicken sondern nur die Felder, so dass am
    schluss z.B. Feld1=wert&Feld2=wert usw. stehen
    muss.

    Bitte was? Naeher erklaeren, bitte.

    Kann mir hier jemand weiterhelfen?

    Nein. Deine Problembeschreibung ist zu diffus, sie
    laesst nicht erkennen, was du moechtest.

    Gruesse,
     CK

    1. Hallo,
      Deine Anregung bezügl. neue Nachricht ist richtig, nur dachte ich, dass dass meine Frage in diesem Forum vieleicht angebrachter ist.

      Nochmal zu meinem Problem:
      ich schreibe im Moment einen kleinen Server in Visual Basic, der es ermöglichen soll z.B. den Programstatus bzw. Fehler usw. eines meiner VB-Programme über jeden x-belibigen (mit dem Internet verbundenen) Rechner abfragen zu können. Dazu kann ich über über den winsock von dem RemoteBrowser den Request empfangen und speziell darauf reagieren (z.B. eine Html-Seite Schicken, dieses funktioniert auch gut). Der Nachteil ist, dass ich ständig die aktuellen Daten vom Browser angezeigt bekommen will ohne diesen von Hand zu aktualisieren. Dazu habe ich in die gesendete Html Page den Meta "Refresch" eingebaut wodurch er alle x sekunden eine neue Page anfordert (klappt auch). Allerdings holt er dadurch immer die ganze Seite und setzt diese somit wieder an den Anfang was nicht gewünscht ist.
      Soweit zur Historie und damit zu meiner Frage:
      gibt es eine Möglichkeit Felder auf einem RemotHost Browser auszufüllen, nachdem dieser in seinem Request Header z.B. ein GET /...?holeFelder oder ähnlich schickt.

      Ich hatte mir vorgestellt, dass der Server (nach dem Browser request) dem Browser z.B. Feld1=wert1, feld2=wert2 usw. zurück gibt und der Browser somit nur diese werte auf seiner Seite aktualiesiert, ohne die ganze html seite neu aufbauen zu müssen.
      Ich weiß allerdings nicht, wie der Response-Header den ich vom Server an den Browser zuschicken soll aussehen muss. Zu bedenken ist vieleicht noch, dass der Server nur auf meine Html-Pages reagieren muss und ich somit nur auf die nötigen Anfragen reagiere (sprich ich habe kein vollständiges CGI/Perl usw. eingebaut).

      Ich hoffe ich habe mich diesmal etwas verständlicher ausgedrückt und bleibe nun in diesem Forum :-)

      Gruß und Danke

      Andreas

      1. Hallo Andreas,

        Deine Anregung bezügl. neue Nachricht ist
        richtig, nur dachte ich, dass dass meine Frage
        in diesem Forum vieleicht angebrachter ist.

        Es gibt hier nur ein Fach-Forum. Deine Frage mit
        dem Themenbereich "CGI" ist etwas weiter auch noch
        zu sehen.

        ich schreibe im Moment einen kleinen Server in
        Visual Basic, der es ermöglichen soll z.B. den
        Programstatus bzw. Fehler usw. eines meiner
        VB-Programme über jeden x-belibigen (mit dem
        Internet verbundenen) Rechner abfragen zu
        können.

        Mit anderen Worten: Spyware.

        Dazu habe ich in die gesendete Html Page den
        Meta "Refresch" eingebaut wodurch er alle x
        sekunden eine neue Page anfordert (klappt
        auch). Allerdings holt er dadurch immer die
        ganze Seite und setzt diese somit wieder an
        den Anfang was nicht gewünscht ist.

        Dagegen helfen Anker (<a name="name">Anker</a>).

        Soweit zur Historie und damit zu meiner Frage:
        gibt es eine Möglichkeit Felder auf einem
        RemotHost Browser auszufüllen, nachdem dieser
        in seinem Request Header z.B. ein GET
        /...?holeFelder oder ähnlich schickt.

        Felder? Was meinst du mit Feldern?

        Ich hatte mir vorgestellt, dass der Server
        (nach dem Browser request) dem Browser z.B.
        Feld1=wert1, feld2=wert2 usw. zurück gibt und
        der Browser somit nur diese werte auf seiner
        Seite aktualiesiert, ohne die ganze html seite
        neu aufbauen zu müssen.

        Das geht nicht. Wird ein Request abgeschickt, muss
        die Seite komplett neu geschickt werden. Es gibt
        verschiedene Moeglichkeiten, das der alte
        Seiteninhalt erhalten bleibt, dazu gehoeren z. B.
        204 No Content, 304 Not Modified, etc. Fuer
        letzteres allerdings muss z. B. ein "Conditional
        GET" geschickt worden sein (was das ist, ist in
        der HTTP-RFC nachzulesen). Ansonsten musst du
        entweder du eine komplett neue Seite schicken oder
        du aenderst gar nichts an der Seite, etwas
        dazwischen gibt es nicht.

        Gruesse,
         CK

        1. Hallo,

          Danke für die schnelle Antwort.

          Das Program was ich schreibe ist nicht direkt Spyware (klingt sehr negativ), sondern soll mir erlauben, dass ich von jedem Rechner sehen kann ob unser Autosampler-Roboter(Diagnostik Gerät) noch ordentlich läuft, bzw. fertig ist.
          Zu deinen Antworten/Fragen:
          Das mit dem Anker habe ich nicht ganz verstanden. Wenn mein Protokoll sehr lang ist muss ich auf der Webseite scrollen. Jetzt möchte ich verhindern, dass wen ich am lesen bin der Browser wieder nach oben springt. Ich kann mir vorstellen, dass wenn ich am ende des Protokolls bin dort ein Anker gesetzt ist und er immer ans ende springt, aber wenn ich irgend wo in der mitte bin würde er ans ende springen oder?

          Das mit den Feldern meinte ich so:
          in meinem Code habe ich z.B. folgende Zeile:

          <INPUT TYPE=TEXTBOX NAME=Fehler SIZE=25 MAXLENGTH=25>

          in meiner vorherigen Beschreibung meinte ich mit Feldern somit das "Feld" Name=Fehler und wollte dieses vom server aus beschreiben.

          Gibt es somit keine Möglichkeit diese "Felder" vom Server aus zu verändern, ohne alles neu zu schicken?

          Gruß
          Andreas

          1. Hallo,

            Das mit den Feldern meinte ich so:
            in meinem Code habe ich z.B. folgende Zeile:

            <INPUT TYPE=TEXTBOX NAME=Fehler SIZE=25 MAXLENGTH=25>

            in meiner vorherigen Beschreibung meinte ich mit Feldern somit das "Feld" Name=Fehler und wollte dieses vom server aus beschreiben.

            Du kannst die Inhalte von Formularfeldern nicht vom Server aus beschreiben. Das hat man dir ja schon erklärt.
            Was das Scrollen angeht, da habe ich dich so verstanden, dass du in dem Dokument umherscrollst und immer an der aktuellen Stelle bleiben willst, auch nach einer Aktualisierung.

            Da käme doch folgende Lösung in Betracht:
            Du machst ein Frameset mit zwei Frames. Das eine Frame zeigt statisch deine Seite mit den Feldern an. In dem anderen (unsichtbaren) Frame lädt sich eine Seite jede Sekunde oder so neu. Diese wird von deinem Server generiert und enthält ein JavaScript welches nachdem es geladen wurde die Werte der Felder im anderen Frame ändert. Dann solltest du das erreiche, was du dir vorstellst.

            Gruß,
                  Stefan

            1. Hallo,
              leider habe auch ich einsehen müssen dass meine Vorstellung so nicht zu realisieren ist :-)
              Aber euer Vorschlag mit dem verstecktem Frame klingt auch nicht schlecht, aber wie Ihr sicherlich bereits schon bemerkt habt, fange ich erst damit an mich mit html zu beschäftigen (wenn man davon absieht mittels Tools wie Go Live einfache Seiten zu generieren ohne das Hintergrundwissen zu haben).

              Da käme doch folgende Lösung in Betracht:
              Du machst ein Frameset mit zwei Frames. Das eine Frame zeigt statisch deine Seite mit den Feldern an. In dem anderen (unsichtbaren) Frame lädt sich eine Seite jede Sekunde oder so neu. Diese wird von deinem Server generiert und enthält ein JavaScript welches nachdem es geladen wurde die Werte der Felder im anderen Frame ändert.

              Gibt es z.B. auf dieser Seite einen kleinen Beispielcode der ähnliches macht? Dieses würde mir helfen mich einzuarbeiten.

              Gruß und besten Dank

              Andreas

        2. Ich bin dur folgende Webseite auf die Idee gekommen:

          http://www.thomas-fahle.de/pub/perl/LWP/HTTP/HTTP_Post.html

          konnte allerdings nicht nachvollziehen wie das funktionier, da dort der Header steht.

          HTTP-FullRequest-Header:
          Content-Length: 91
          Content-Type: application/x-www-form-urlencoded

          HTTP-FullRequest-Header-Content:
          Name=Thomas%20Fahle&Programmiersprache=Perl&Betriebssystem=Linux&Bemerkung=Und%20Tsch%FC%DF

          Aber höchstwarscheinlich habe ich das falsch verstanden.

          Gruß Andreas

          1. Moin!

            Ich bin dur folgende Webseite auf die Idee gekommen:

            http://www.thomas-fahle.de/pub/perl/LWP/HTTP/HTTP_Post.html

            konnte allerdings nicht nachvollziehen wie das funktionier, da dort der Header steht.

            HTTP-FullRequest-Header:
            Content-Length: 91
            Content-Type: application/x-www-form-urlencoded

            HTTP-FullRequest-Header-Content:
            Name=Thomas%20Fahle&Programmiersprache=Perl&Betriebssystem=Linux&Bemerkung=Und%20Tsch%FC%DF

            Aber höchstwarscheinlich habe ich das falsch verstanden.

            Ja. Es handelt sich hier um einen POST-Request. Das ist das Teil, was der Browser an den Server sendet. Da stehen logischerweise nur die Formularfelder drin.

            Umgekehrt kannst du, wie Christian schon erwähnte, nur ganze Seiten ausliefern - oder gar keine. Etwas anderes läßt HTTP nicht zu. Inkrementelles Seitenausliefern ist einfach nicht vorgesehen (obwohl es durchaus Überlegungen gibt, beispielsweise durch Delta-Encoding das Ausliefern kompletter Seiten zu umgehen und Speicherplatz einzusparen, indem nur die Unterschiede zur vorherigen, schon mal ausgelieferten Seite zu senden).

            Aber natürlich kannst du dir Methoden überlegen, trotzdem zum Ziel zu kommen. Niemand zwingt dich, dass du immer die komplette Seite ausliefern mußt. Du kannst auch ein Frameset aufbauen und in einem _anderen_ Frame regelmäßig ein Javascript laden, welches dann seinerseits unten an die Seite die neuen Ergebnisse dranhängt.

            Allerdings frage ich mich, ob solch eine Protokoll-Liste für die Aufgabe nötig ist, oder ob nicht eine simple Wiedergabe des aktuellen Status ausreicht. Dann wäre das Ausliefern einer kompletten Seite eigentlich kein Problem.

            Und außerdem ließe sich das Problem, dass die neuen Werte bei einer Komplettauslieferung der Seite unten angefügt werden, der Browser aber nach oben springt, simpel so lösen, dass du die Ergebnisliste einfach umgekehrt sortierst und neue Ergebnisse _oben_ anfügst.

            Sei kreativ. HTTP kann dir nicht alles abnehmen, für den Rest bis zur passenden Lösung sollte ein innovativer Umgang mit HTML auch ganz hilfreich sein.

            - Sven Rautenberg

            --
            "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
    2. hallo CK ;-)

      Ja, wo kommst du denn her? Hat ja nicht lange gedauert, bvis du doch wieder nen Rechner gefunden hast.

      Vor sehr wenigen Tagen wurde dir hier in einem Thread eine streßarme Zeit gewünscht. Scheint ja fast in Erfüllung gegangen zu sein, wenn du ins Forum gehen kannst  -  und zu dieser Zeit.

      ;-)

      Grüße aus Berlin

      Christoph S.

      1. Hallo Christoph,

        Ja, wo kommst du denn her?

        Aus Delmenhorst :)

        Hat ja nicht lange gedauert, bvis du doch
        wieder nen Rechner gefunden hast.

        Naja. Ich kann ja fast jedes WE heim.

        Vor sehr wenigen Tagen wurde dir hier in einem
        Thread eine streßarme Zeit gewünscht.

        Hab ich nicht gelesen ;)

        Scheint ja fast in Erfüllung gegangen zu sein,
        wenn du ins Forum gehen kannst  -  und zu
        dieser Zeit.

        Naja, nicht so ganz. Jeden Morgen um 5:00 Uhr
        aufstehen, meist bis 20:00 oder spaeter Dienst,
        Schikanen durch die Ausbilder -- nervt schon ganz
        schoen. Beispiel: man hatte uns gesagt, dass wir
        Privatsachen unterm Bett aufbewahren koennen,
        deshalb hatte ein Stubenkamerad Pfandflaschen, die
        er noch nicht weggebracht hatte, dort
        aufbewahrt -- die haben sie erstmal kaputt
        geschmissen. Oder G36 (Standard-Bewaffnung)
        zerlegen und zusammensetzen: erst ganz normal.
        Dann alle 5s 5 Liegestuetzen machen dabei, dann
        bei Pfiff 10x um den Helm rumrennen und dann
        weitermachen. Schliesslich mit verbundenen Augen,
        dann mit verbundenen Augen und Fingerhandschuhen
        und zuletzt mit verbundenen Augen,
        Fingerhandschuhen und darueber die
        ABC-Handschuhe... alles in allem sehr nervig. Und
        das bescheuertste ist, nie kriegt man zu hoeren,
        ob etwas gut war, es werden einem nur die Fehler
        vor Augen gefuehrt. Beispiel: am Freitag hatten
        wir mal wieder Stubendurchgang. Da war alles so
        sauber, dass sie nichts dreckiges finden konnten.
        Nicht unter oder hinter den Betten oder
        Schraenken, nichtmal am Lampenschirm. Dann haben
        sie den Lampenschirm abgenommen und *darin*
        nachgeschaut, ob da noch Dreck ist (natuerlich war
        da noch Dreck drin). Anstatt es einfach gut sein
        zu lassen, aber noe...

        Das einzige, was lustig ist, beim Bund, sind die
        dummen Sprueche :)

        Gruesse,
         CK

        1. Moin!

          Naja, nicht so ganz. Jeden Morgen um 5:00 Uhr
          aufstehen, meist bis 20:00 oder spaeter Dienst,
          Schikanen durch die Ausbilder -- nervt schon ganz
          schoen. Beispiel: [...] am Freitag hatten
          wir mal wieder Stubendurchgang. Da war alles so
          sauber, dass sie nichts dreckiges finden konnten.
          Nicht unter oder hinter den Betten oder
          Schraenken, nichtmal am Lampenschirm. Dann haben
          sie den Lampenschirm abgenommen und *darin*
          nachgeschaut, ob da noch Dreck ist (natuerlich war
          da noch Dreck drin). Anstatt es einfach gut sein
          zu lassen, aber noe...

          Ich würde behaupten: Das ist normal. Es gehört zur Ausbildungstaktik. Ihr gegen die Ausbilder. Das schweißt zusammen, und nur darum geht es. Davon kann ich durchaus noch ein Liedchen singen. :) "Been there, done that, have the t-shirt."

          Ich darf dir verraten, dass sich das mit fortschreitender Zeit legt. So war's jedenfalls bei meiner Grundausbildung - die Wehrdienstzeit betrug damals aber noch 12 Monate, da war mehr Zeit für Ausbildung - obwohl meine Grundausbildung plus die anschließende erweiterte fachliche Grundausbildung insgesamt 6 Monate dauerten (so ist das eben, wenn man Morsefunk lernen soll), also auch nicht mehr so viel Zeit für produktiven Dienst war. Ich gestehe aber gerne zu, dass es bei der Marine vielleicht etwas netter zugeht. :)

          Das einzige, was lustig ist, beim Bund, sind die
          dummen Sprueche :)

          Insbesondere die Wecksprüche waren bei uns immer ganz nett.

          - Sven Rautenberg

          --
          "Bei einer Geschichte gibt es immer vier Seiten: Deine Seite, ihre Seite, die Wahrheit und das, was wirklich passiert ist." (Rousseau)
          1. Moin Sven,

            Ich würde behaupten: Das ist normal. Es gehört
            zur Ausbildungstaktik. Ihr gegen die Ausbilder.
            Das schweißt zusammen, und nur darum geht es.
            Davon kann ich durchaus noch ein Liedchen
            singen.

            Ja, das ist mir schon klar ;) Aendert aber nichts
            daran, dass es nervt. Nextes mal lassen wir ein
            oder zwei "Sollbruchstellen" dreckig, Stellen,
            die man leicht nachreinigen kann -- dann sind die
            Ausbilder zufrieden und wir haben nicht viel
            Arbeit damit. Aber an dem Tag wars auch extrem.
            Fuer den Tag war urspruenglich nichts vorgesehen
            und die Ausbilder hatten am Tag vorher gesoffen,
            nur der Zugdienst-Uffz musste frueh aufstehen.
            Weils mit dem Antreten dann aber nicht wie
            gewuenscht geklappt hat, hat er die anderen wach
            gemacht. Die hatten natuerlich einen dicken Kopf
            (roch man an der meterlangen Fahne... gittigitt)
            und waren dementsprechend schlechter Laune.

            Ich darf dir verraten, dass sich das mit
            fortschreitender Zeit legt.

            Ich wills hoffen. Dienstag bis Donnerstag ist
            Schiess-BiWaK, bin mal gespannt, obs danach besser
            ist.

            So war's jedenfalls bei meiner
            Grundausbildung - die Wehrdienstzeit betrug
            damals aber noch 12 Monate, da war mehr Zeit
            für Ausbildung - obwohl meine Grundausbildung
            plus die anschließende erweiterte fachliche
            Grundausbildung insgesamt 6 Monate dauerten
            (so ist das eben, wenn man Morsefunk lernen
            soll), also auch nicht mehr so viel Zeit für
            produktiven Dienst war.

            Die Grundausbildung dauert heute 3 Monate, danach
            kommt bei mir noch eine Fachausbildung (lange
            nicht bei allen!). Ich sitz spaeter dann in der
            Feuer-Leitung... bin mal gespannt, ob ich
            ueberhaupt jemals bei einem Drohnen-Start dabei
            bin ;)

            Ich gestehe aber gerne zu, dass es bei der
            Marine vielleicht etwas netter zugeht. :)

            Wenn man dem glauben schenken kann, was man so
            hoert, hat die Luftwaffe es eh am besten... die
            haben ja auch keinen Truppenausweis, sondern eine
            Clubkarte ;)

            Das einzige, was lustig ist, beim Bund,
            sind die dummen Sprueche :)

            Insbesondere die Wecksprüche waren bei uns
            immer ganz nett.

            *Die* sind bei uns langweilig. 'AUFSTEHEN!'

            So, ich muss mal meine Feldblusen buegeln... bis
            nextes WE.

            Gruesse,
             CK

            1. Moin!

              Ich gestehe aber gerne zu, dass es bei der
              Marine vielleicht etwas netter zugeht. :)

              Wenn man dem glauben schenken kann, was man so
              hoert, hat die Luftwaffe es eh am besten... die
              haben ja auch keinen Truppenausweis, sondern eine
              Clubkarte ;)

              Jaja, wir von der Lust.. aeh, Luftwaffe. Aber eigentlich riechen wir ja alle nach Wasser: Die vom Heer nach Grundwasser, die Marine-Kameraden nach Meerwasser, und wir von der Luftwaffe nach Rasierwasser! ;-)

              Wer von diesen Spruechen mehr lesen moechte, kann dies gerne auf http://www.unmoralische.de/bundeswehr.htm machen ;-)

              Viele Gruesse,

              Einbecker

              --
              ... auch wenn ich eigentlich ja Dresdener bin...
          2. Holladiewaldfee,

            (so ist das eben, wenn man Morsefunk lernen soll

            Na denn ma los:
            http://harry.ilo.de/temp/morse.php

            Jede Menge Spaß:
            http://harry.ilo.de/temp/morse.php?url=http%3A%2F%2Fforum.de.selfhtml.org%2F

            :-D

            Ciao,

            Harry

            --
              Hä? Was? Signatur?! Kann man das essen?