Post vs. Get bei NS 4.x und Mozilla
Thomas H.
- browser
Hi, ich habe auf einer relativ komplexen Seite festgestellt, dass der NS 4.x reproduzierbar nach eine POST folgende Meldung als Quelltext anzeigt:
<TITLE>Fehlende Rückantwort-Daten</TITLE>
<H1>Fehlende Daten</H1>
Dokument ist Ergebnis einer Veröffentlichung und nicht mehr
gültig. Formulardaten erneut versenden, um
Dokument durch Klicken auf <b>Neu laden</b> wiederherzustellen.
Zuerst dachte ich an einen Fehler im HTML, auf den der NS empfindlich reagiert, als ich aber dann im - für mich - Referenzbrowser Mozilla 0.9.8 einen ähnlichen Effekt erlebt habe, wusste ich, dass es etwas anderes sein muss. Das HTML ist btw. lt Dreamweaver auch ok.
Sobald ich das Formular von der Vorseite auf GET umstelle, kann ich mir den Quelltext anzeigen lassen.
Der IE zeigt den Quelltext unabhängig davon immer an.
Wie kann ich mir das erklären? Mache ich einen Fehler oder der Server, oder ist das evtl. normal?
MfG Thomas Hoppe
Hi, ich habe auf einer relativ komplexen Seite festgestellt, dass der NS 4.x reproduzierbar nach eine POST folgende Meldung als Quelltext anzeigt:
<TITLE>Fehlende Rückantwort-Daten</TITLE>
<H1>Fehlende Daten</H1>
Dokument ist Ergebnis einer Veröffentlichung und nicht mehr
gültig. Formulardaten erneut versenden, um
Dokument durch Klicken auf <b>Neu laden</b> wiederherzustellen.
Ich frage mich, ob es was mit post/get zu tun hat.
Gibst Du dem Browser den Content-type zurück?
Hi, ich habe auf einer relativ komplexen Seite festgestellt, dass der NS 4.x reproduzierbar nach eine POST folgende Meldung als Quelltext anzeigt:
<TITLE>Fehlende Rückantwort-Daten</TITLE>
<H1>Fehlende Daten</H1>
Dokument ist Ergebnis einer Veröffentlichung und nicht mehr
gültig. Formulardaten erneut versenden, um
Dokument durch Klicken auf <b>Neu laden</b> wiederherzustellen.
Ich frage mich, ob es was mit post/get zu tun hat.
Gibst Du dem Browser den Content-type zurück?
Hi Reiner, müsste das nicht der Webserver machen?
Ich scripte hier mit PHP, habe mir mal noch einige andere Formulare angeschaut und bei allen gibt's den selben Effekt.
danke, Thomas
Hi Thomas,
Ich frage mich, ob es was mit post/get zu tun hat.
Gibst Du dem Browser den Content-type zurück?
Hi Reiner, müsste das nicht der Webserver machen?
Nein, eigentlich nicht!
Das ist ein Fehler, der oft bei CGI gemacht wird.
Das Script, das die post/get-Anfrage aufnimmt, stellt sich dem Browser als neuer Seitenaufruf dar. D.h. Du mußt dem Browser auch Daten liefern, zumindest aber den Content-Type.
Unter Perl geht das so:
print "Content-type: text/html\n\n";
Reiner
Hi there!
Wie kann ich mir das erklären? Mache ich einen Fehler oder der Server, oder ist das evtl. normal?
Das ist normal. Wenn Du den Quelltext anzeigen laesst, zeigt Netscape nicht unbedingt den von der Seite, die genau in dem Moement geladen ist, sondern fordert die Seite unter Umstaenden nochmal neu vom Server an. Das bringt normalerweise das selbe Ergebnis. Aber ein POST-Request ist nichts, was man einfach so nochmal absendet. POST verwendet man, wenn damit ein Vorgang auf der Serverseite (z.B. Mail verschicken, Eintraege in Datenbank machen, whatever) verbunden ist. Wuerde man den Request nochmal abschicken, gaebe es eine zweite Mail, einen zweiten DB-Eintrag, usw... Deshalb macht der Browser das nicht automatisch, sondern teilt Dir mit dieser etwas missglueckten Uebersetzung dieser Meldung mit, dass Du selber Reload druecken sollst, wenn Du Dir sicher bist, dass Du das willst. Normalerweise erhaelst Du diese Nachricht, wenn Du von der Ergebnisseite eines POST-Requests weitersurfst und dann in der History zurueckgehst und die Seite aus irgendeinem Grund nicht mehr im Cache ist. Aber in diesem Fall siehst Du die Meldung eben im Quelltext, weil die Seite schon jetzt nicht mehr im Cache ist. Das kann einerseits an den Cache-Einstellungen liegen (revalidate every time ausschalten), oder der Server hat mit der Ergebnisseite entsprechende Anweisungen mitgeschickt, die die Seite nicht in den Cache gelangen lassen (Verfallsdatum in der Vergangenheit, Cache-control: no-cache oder aehnliches). Was mich etwas wundert ist, dass der Mozilla sich den Quelltext der aktuellen Seite auch nicht merken kann.
So long
Mhh, an das hatte ich am Anfang auch gedacht! gerade, weil da was von einer nicht vorhandenen Serverantwort steht. Das mit dem Post ist klar, die neuen Browser haben ja aber leiser diese Funktion zum erneuten Senden von Daten, sodass man auch das noch abfangen muss. Naja, dann werde ich das wohl einfach so hinnehmen.
thx, Thomas