This is a built in function of most every browser. "Page Expired..." is IE's way of putting it. Firefox is a little more clear and says:
Confirm: To display this page, Firefox must send information that will repeat any action (such as a search or order confirmation) that was performed earlier.
However, that probably still leaves a lot of head scratching. Essentially, when YOU input data in a FORM - like a text box with "submit" buttons. That data is sent from your computer to the server. Depending on the script, the server performs some sort of process using the data YOU supplied.
In the case of a search, YOU type in a character string (words) and click "search". The script for a search usually then runs a query on the database to find all instances of that string in particular field in the database. Then most often the results are output to the screen for you to see. Script stops running and you're done.
If you then click on a search result, you are moving to a new page. When you click the "Back" button of your browser, you are now attempting to access a page that was generated based on the string YOU entered. Almost always, this page will break, display an error, or some other unwanted behavior if there is NO input.
As a result, the BROWSER recalls the information that YOU input previously to display that page.
(Think in your mind what the results page of a search looks like. Then imagine what should display there if you did not input anything - the page would most likely be empty!)
This all sounds like a non-issue and the browser should just re-display the SAME page using YOUR previously entered string.
However, here's the rub - many times the page that is called after submitting a form does something that you DO NOT want to have happen more than once. For instance charging a credit card for an order or even just submitting an order. Posting a reply on the forum is another example and that is why you get the links that ask if you want to go to the index or the thread after you post. If you click back and the BROWSER re-sends the form data YOU entered, it will be a double post.
The BROWSER doesn't have any way to know what is happening with the form data that YOU posted. Most scripts are run on the server and only the OUTPUT is sent to the BROWSER. So people creating browsers don't want to make it automatically re-post and nor do they want to force you to re-enter the data. And so they keep the data for re-posting, but make YOU manually confirm the action first.
And that's the story of the three bears.... clear as mud?