Moin!
Aber gibt es keine Möglichkeit einfach die Daten nur beim ersten mal zu senden, also dem Browser zu erklären, dass er beim zurück gehen in der History, oder beim aktualisieren die Daten nicht mehr senden soll?
Beim Wandern in der History sendet Opera keine erneuten Requests und stellt deshalb auch die Frage nicht.
Aber beim Aktualisieren, was vollkommen logisch ist:
- Die erste Seite wird per GET geladen, darauf befindet sich dann ein POST-Formular.
- Das Formular wird abgeschickt, die zweite Seite wird also per POST geladen.
- Dann wird per Link eine dritte Seite aufgerufen.
Wird jetzt die dritte Seite aktualisiert, wiederholt der Browser einfach den GET-Request, lädt den eventuell erneuerten Seiteninhalt vom Server und zeigt ihn an.
Geht man in Opera zurück zur zweiten Seite, wird die einfach so angezeigt, wie sie war, als man sie verließ. Aber wird sie aktualisiert, dann wiederholt der Browser einfach den POST-Request, lädt den eventuell erneuerten Seiteninhalt vom Server und zeigt ihn an. Da POST-Requests aber üblicherweise dazu verwendet werden, auf dem Server Daten zu ändern, fragt der Browser vorher den Benutzer, ob das erneute Absenden des POST-Requests erwünscht ist.
Ginge man mit Opera zurück zur ersten Seite, würde das dortige Formular so angezeigt, wie es beim Abschicken des Formulars ausgesehen hat - also ausgefüllt. Wenn man die Seite aktualisiert, wiederholt der Browser einfach den GET-Request, lädt den eventuell erneuerten Seiteninhalt vom Server und zeigt ihn an. Das ist vermutlich ein leeres Formular.
Andere Browser verfügen nicht über so eine gute History-Funktion, sondern laden jede Seite automatisch neu, wenn man zurück geht. Dadurch wird sowohl der POST-Request automatisch wiederholt (und folgerichtig entsteht die Nachfrage), als auch das Formular auf Seite 1 automatisch wieder leer angezeigt.
Gegen dieses Browserverhalten ist serverseitig kein Kraut gewachsen - man muß annehmen, dass der Benutzer durch die Wahl seines Browsers solch ein Verhalten eben wünscht - ansonsten hätte er einen besseren Browser genommen... :)
- Sven Rautenberg
"Love your nation - respect the others."