Andreas Korthaus: Internet Explorer sieht nach Formular leere Seite

Beitrag lesen

Hallo!

Ich habe ein Problem mit dem Internet-Explorer (Version 6, WinXP, also nichts außergewöhnliches). Leider kann ich das selber nicht reproduzieren, sondern habe nur die Fehlerbeschreibung eines Anwenders, was die Sache leider etwas verkompliziert.

Es passiert folgendes:

Der Anwender füllt ein zwar etwas längeres, aber sonst stinknormales HTML-Formular aus. Unter dem Formular habe ich eine Grafik als Submit-Schaltfläche. Wenn diese betätigt wird, dann werden die Daten aus dem Formular per POST und multipart/form-data kodiert (2 optionale Upload-Felder vorhanden) an ein PHP-Script geschickt. Das Script verarbeitet die Daten, und schickt dann einen Location-Header (header('Location: http://...');exit;) zurück an den Browser, der diesen auf eine andere Seite weiterleitet. Die Daten werden in der Session gespeichert, so dass sie ggfs. noch verändert werden können. Die HTML-Ausgabe wird gzip-komprimiert(per php.ini), es wird kein SSL verwendet. Auf dem Server läuft Apache 1.3.31 mit mod_php 4.3.9 mit PECL::APC 2.0.4 (Opcode Cache).

Bei mir funktioniert das wunderbar, ich (und ca. 20 andere Leute) haben das Formular schon mehrere 100, wenn nicht sogar 1000 mal verwendet, mit allen möglichen OS/Browser Kombinationen. Ohne jegliches Problem.

Jetzt hat der Anwender folgendes Problem:

Er füllt das Formular fast vollständig aus, klickt auf die Submit-Grafik, und dann kommt er nicht auf die Seite, die er gemäß Location-Header eigentlich bekommen soll, sondern die Seite ist einfach leer/weiß. Wenn er im Browser zurück geht, ist das Formular leer. "Manchmal" sind die Daten auch wieder im Formular wenn er es dann erneut aufruft (wenn die Daten einmal auf dem Server angekommen sind, werden sie in die Session geschrieben, und bei jedem erneuten Aufruf dann im Formular vorbelegt).

Vom IE sind mir einige seltsamen Dinge bekannt, aber in diesem Fall habe ich keine Idee woran das liegen könnte, bzw. was da passiert und warum es nicht funktioniert.

In den Serverlogs lässt sich nicht sicher sagen was genau passiert ist, auf jeden Fall sind von diesem Anwender entsprechende POST-Requests gekommen, entsprechende 302-Header gesendet worden, und darauf entsprechende GET-Requests gesendet und korrekt vom Server beantwortet worden. Allerdings hat er es oft versucht, und es kann sein dass manchmal ein POST-Request fehlte. In jedem Fall wurde _wenn_ es einen POST-Request gab, immer korrekt vom Server geantwortet. Und die Seite die durch den location-Header dann per GET angefordert wurde, ist immer mit >1KB Inhalt ausgeliefert worden. Aber vielleicht hat der speziell auch ein Problem mit den Headern die PHP Dank Session, gzip... so in eine einfache 302-Antwort (Location-Header) schreibt, z.B.:

HTTP/1.1 302 Found
Date: Fri, 01 Oct 2004 14:49:32 GMT
Server: Apache
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Location: http://www.example.com/new/location?
Content-Encoding: gzip
Vary: Accept-Encoding
Keep-Alive: timeout=15, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html

Hat vielleicht von Euch jemand sowas schonmal gehabt, oder ne Idee woran das liegen könnte?

Grüße
Andreas

--
SELFHTML Feature Artikel: http://aktuell.de.selfhtml.org/artikel/