Strony POST „wygasają” przez pomylenie Cache z Historią

Dokument KB na stronach Microsoftu utrzymuje, że IE odróżnia historię od cache, choć na tej samej stronie podany jest sposób w jaki nagłówkami cache wymusić odświeżenie historii.

Internet Explorer, wbrew zaleceniom specyfikacji HTTP (RFC2616/13.13) używa cache do wyświetlania historii stron.

Cofanie się w historii (przycisk "Wstecz") powinno być całkowicie nieczułe na wygasanie cache i mimo wszystko pokazywać stronę, którą użytkownik wcześniej załadował.

W Internet Explorerze możliwe jest wymuszenie odświeżenia „archiwalnych” stron w historii, a na dodatek formularze wysłane metodą POST blokują cofanie lub wymuszają wielokrotne wysłanie formularza:

Uwaga: Strona wygasła. Żądana strona została utworzona przy wykorzystaniu informacji przesłanych w formularzu. Strona nie jest dostępna. Ze wzglądów bezpieczeństwa, na wszelki wypadek, program Internet Explorer nie przesyła ponownie informacji. Aby ponownie przesłać informacje i ponownie oglądać stronę sieci Web, kliknij przycisk Odśwież.

Rozwiązanie

W odpowiedzi na każdy formularz wysłany metodą POST wysyłać przekierowanie ze statusem 303 See Other.

Po przekierowaniu dane z formularza przestaną być dostępne dla skryptu. Jeśli są niezbędne na docelowej stronie (np. do ponownego wygenerowania formularza, jeśli zawierał błędy), niestety niezbędne będzie chwilowe przechowanie danych po stronie serwera i użycie mechanizmu sesji lub unikalnego identyfikatora w adresie.


Spis bugów


Zmodyfikowano: 16.10.2006, 03:39
submit