I'm hoping someone here knows the magic incantation of server side cacheing parameters to make I.E. behave like every other web browser. Here is the scenario, I have three web pages that flow like so...
(Page 1) -- post --> (Page 2) -- post --> (Page 3)
Page 1 is a registration form, page 2 is a survey form and page 3 is an error page. In this user flow the error page is shown because the user did not properly fill out the survey (page 2).
For this website we are dealing with somewhat sensitive personal information and the pages are all dynamic and provide different content at different points during the user's session. Therefor it is important that pages are not cached. I already have the collection of magical headers setup to keep anything from being cached in all modern browsers.
Now, here is the problem. When the user hits page 3 above they see an error prompting them to go back and fix their mistakes. In every browser except IE the user can use their browser's back button or a javascript control to go back a page. When they do this the page is pulled from cache and they can fix their mistake and resubmit. The page can be pulled from cache because they used their back button to generate a history request which is treated differently than a normal web request. This is how things are supposed to work AFAIK.
Unfortunately I.E. doesn't work this way. It throws up an error message asking if it is OK to resubmit the form. If they say yes then it tries to resubmit the account create (page 1) which is bad, if they say no then they get a different IE error page telling them the page can not be displayed.
So the question is how to allow IE to cache pages only for the purpose of its history (the forward/backward buttons) and not for normal GET/POST requests. Help?
The cacheing headers that are currently being set are...
Code:
// Set to expire far in the past.
Expires: Sun, 7 May 1995 12:00:00 GMT
// Set standard HTTP/1.1 no-cache headers.
Cache-Control: no-store, no-cache, must-revalidate
// Set IE extended HTTP/1.1 no-cache headers (use addHeader).
Cache-Control: post-check=0, pre-check=0
// Set standard HTTP/1.0 no-cache header.
Pragma: no-cache
Thanks,
-Mike