Server Response Header
Andreas Wolf
- webserver
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
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
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
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
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
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
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
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
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-urlencodedHTTP-FullRequest-Header-Content:
Name=Thomas%20Fahle&Programmiersprache=Perl&Betriebssystem=Linux&Bemerkung=Und%20Tsch%FC%DFAber 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
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.
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
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
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
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
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