X
Tap here to go to the mobile version of the site.

Support Forum

Firefox 29 back button will not return to previous form

Posted

Previous screen is a form for searching and the results returned. Clicking on a "more info" button moves to the next screen and shows more info. The "back" button will not return to the previous screen, giving the message, "document no longer available".

Firefox is standard vanilla install. All other major browsers return properly to the previous screen. If this cannot be corrected, we will be forced to abandon FIrefox and recommend to our 46,000 customers to move to another browser, especially when using our website.

To duplicate this problem, go to www.mybfl.com/search.php, search for a book, and when displayed, click on the 'More Info' button. Clicking on the Firefox "back" button illustrates the problem.

Previous screen is a form for searching and the results returned. Clicking on a "more info" button moves to the next screen and shows more info. The "back" button will not return to the previous screen, giving the message, "document no longer available". Firefox is standard vanilla install. All other major browsers return properly to the previous screen. If this cannot be corrected, we will be forced to abandon FIrefox and recommend to our 46,000 customers to move to another browser, especially when using our website. To duplicate this problem, go to www.mybfl.com/search.php, search for a book, and when displayed, click on the 'More Info' button. Clicking on the Firefox "back" button illustrates the problem.

Chosen solution

Yes, Firefox 32 is when this behavior began.

I just went in and checked Tools->Options->Override Automatic Cache Management and for the moment at least, the problem has disappeared.

Thanks, hope this solves the problem.

Read this answer in context 11

Additional System Details

Installed Plug-ins

  • Shockwave Flash 14.0 r0
  • Google Update
  • Shockwave Flash 13.0 r0
  • Adobe PDF Plug-In For Firefox and Netscape 11.0.07
  • 5.1.30214.0
  • Sony Reader Application Detector Plugin
  • GEPlugin
  • The plug-in allows you to open and edit files using Microsoft Office applications
  • Office Authorization plug-in for NPAPI browsers

Application

  • User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0

More Information

jscher2000
  • Top 10 Contributor
5899 solutions 48488 answers

This is caused by Firefox honoring the instructions of the page not to cache or store it, so every reload requires another request to the web server. (See attached screenshot)

There might be a way to override this using an add-on, but in the short run, the best strategy is to open the links in a new tab or new window using one of these methods:

  • Ctrl+click or middle-click (scroll wheel) => open in a new tab
  • Shift+click => open in a new window
  • right-click menu also has these options
This is caused by Firefox honoring the instructions of the page not to cache or store it, so every reload requires another request to the web server. (See attached screenshot) There might be a way to override this using an add-on, but in the short run, the best strategy is to open the links in a new tab or new window using one of these methods: * Ctrl+click or middle-click (scroll wheel) => open in a new tab * Shift+click => open in a new window * right-click menu also has these options

Modified by jscher2000

Question owner

Thank you for your response. If I understand you correctly, the problem is with our website's presentation to Firefox. How do we keep our website pages from instructing Firefox not to cache or store the page?

We are not aware of having provided that kind of instructions and we are not doing an https.

Thanks for your help.

Thank you for your response. If I understand you correctly, the problem is with our website's presentation to Firefox. How do we keep our website pages from instructing Firefox not to cache or store the page? We are not aware of having provided that kind of instructions and we are not doing an https. Thanks for your help.
jscher2000
  • Top 10 Contributor
5899 solutions 48488 answers

The home page (index.php) comes with the same headers, so it may not be limited to search results.*

I'm not an expert on this but I think there are three places to check:

(1) In your php scripts, look for any header() directives at the beginning of the file.

(2) In the root directory, look for an .htaccess file that may contain cache-control headers.

(3) Check httpd.conf for cache-control headers. This may not be accessible on shared hosting services.

* However, Firefox only displays that dialog if the page you're trying to go back to was generated by a POST request.

The home page (index.php) comes with the same headers, so it may not be limited to search results.* I'm not an expert on this but I think there are three places to check: (1) In your php scripts, look for any header() directives at the beginning of the file. (2) In the root directory, look for an .htaccess file that may contain cache-control headers. (3) Check httpd.conf for cache-control headers. This may not be accessible on shared hosting services. ''* However, Firefox only displays that dialog if the page you're trying to go back to was generated by a POST request.''

Modified by jscher2000

Question owner

Here is the content of .htaccess:

  1. comment spam

ErrorDocument 503 "Temporarily unavailable" RewriteEngine on RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} /email/log.php RewriteRule .* - [R=503,L]

It appears none on the above is relevant to anything other than when taking down a website for maintenance and returning a 503 to search engines.

All of our web pages have the same headers/trailers, ie:

require_once "std.php"

   <web page scripts>

require_once "trailer.php"

Moving from any page to another allows a return to the previous page using the Firefox "back" button unless the previous page contained a form (search, logon).

The problem seems to be the form on the previous page. It is as if Firefox is afraid it cannot safely fill in the form (ie, the page has not been saved "as is"), but which is actually what we want.

It does not matter what Firefox settings we could apply as we cannot tell all of our customers to whom we have recommended Firefox, "By the way, you have to make this setting to get it working like it used to work."

We need a way for our webpages to signal, "Yes, by all means cache and copy!"

We do not seem to have an httpd.conf file, but I will pursue the possibility of it affecting us with our hosting company.

Thanks, Jack

Here is the content of .htaccess: #comment spam ErrorDocument 503 "Temporarily unavailable" RewriteEngine on RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} /email/log.php RewriteRule .* - [R=503,L] It appears none on the above is relevant to anything other than when taking down a website for maintenance and returning a 503 to search engines. All of our web pages have the same headers/trailers, ie: require_once "std.php" <web page scripts> require_once "trailer.php" Moving from any page to another allows a return to the previous page using the Firefox "back" button unless the previous page contained a form (search, logon). The problem seems to be the form on the previous page. It is as if Firefox is afraid it cannot safely fill in the form (ie, the page has not been saved "as is"), but which is actually what we want. It does not matter what Firefox settings we could apply as we cannot tell all of our customers to whom we have recommended Firefox, "By the way, you have to make this setting to get it working like it used to work." We need a way for our webpages to signal, "Yes, by all means cache and copy!" We do not seem to have an httpd.conf file, but I will pursue the possibility of it affecting us with our hosting company. Thanks, Jack
jscher2000
  • Top 10 Contributor
5899 solutions 48488 answers

Could you check inside std.php for any header() lines?

Could you check inside std.php for any header() lines?

Question owner

Checking the httpd.conf file content, there are no caching instructions other than where to cache SSL data and for how long. Firefox seems to think there is a security problem by caching/copying the page.

How do we turn that off? What can we add to what file so Firefox treats pages with HTML forms like any other page?

Checking the httpd.conf file content, there are no caching instructions other than where to cache SSL data and for how long. Firefox seems to think there is a security problem by caching/copying the page. How do we turn that off? What can we add to what file so Firefox treats pages with HTML forms like any other page?
jscher2000
  • Top 10 Contributor
5899 solutions 48488 answers

The error description does make it sound like a security issue, but since it is an HTTP page, it isn't really about security.

I'm pretty sure those headers are being sent by your web server; by default, Firefox is happy to cache pages generated by a POST, whether they are send over a regular connection or a secure connection.

One option might be to send headers instructing Firefox to cache the page for a certain amount of time, e.g., 60 minutes, to see whether that overrides the no-cache headers. I can't experiment with that at the moment, I would need to research/test it first.

The error description does make it sound like a security issue, but since it is an HTTP page, it isn't really about security. I'm pretty sure those headers are being sent by your web server; by default, Firefox is happy to cache pages generated by a POST, whether they are send over a regular connection or a secure connection. One option might be to send headers ''instructing'' Firefox to cache the page for a certain amount of time, e.g., 60 minutes, to see whether that overrides the no-cache headers. I can't experiment with that at the moment, I would need to research/test it first.

Question owner

Nothing like "header()" in std.php or any other php script (I did a grep). The first lines of std.php are:

<meta content="S-KAkQLVtW8mHkOuwlrU2y_x5_a39oPxiSitp99UzZQ" name="google-site-verification"> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"> 90) echo "<meta content="$Refresh" http-equiv="refresh">"; ?> <meta content="en" http-equiv="Lang"> <meta content="Books For Less - New and Used Books" name="description"> <meta content="" name="keywords"> <title>Atlanta's Largest Independent Bookseller</title> <meta content="Your Atlanta bookstore - buy, sell and trade new and used books in Gwinnett County, Suwanee, Buford, Lawrenceville, Sugar Hill, Alpharetta, Fulton County and the surrounding area. Textbooks, novels, bibles and more. Stop by today!" name="description"> <link href="www.mybfl.com/images/favicon.ico" rel="SHORTCUT ICON"> <style> [ bunch of style stuff ] </style> And, all the pages work except for the one that has the HTML form for searching on it. I tried the logon form page and it does move backward fine. So it is not necessarily a form thing. How do I send a header instructing Firefox to cache?

Nothing like "header()" in std.php or any other php script (I did a grep). The first lines of std.php are: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <meta name="google-site-verification" content="S-KAkQLVtW8mHkOuwlrU2y_x5_a39oPxiSitp99UzZQ" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <?php if($Refresh>90) echo "<meta http-equiv='refresh' content='$Refresh' />"; ?> <meta http-equiv="Lang" content="en"> <meta name="description" content="Books For Less - New and Used Books"> <meta name="keywords" content=""> <title>Atlanta's Largest Independent Bookseller</title> <meta name="description" content="Your Atlanta bookstore - buy, sell and trade new and used books in Gwinnett County, Suwanee, Buford, Lawrenceville, Sugar Hill, Alpharetta, Fulton County and the surrounding area. Textbooks, novels, bibles and more. Stop by today!" /> <head> <link rel="SHORTCUT ICON" href="www.mybfl.com/images/favicon.ico"/> <style> [ bunch of style stuff ] </style> </head> <body> And, all the pages work except for the one that has the HTML form for searching on it. I tried the logon form page and it does move backward fine. So it is not necessarily a form thing. How do I send a header instructing Firefox to cache?

Question owner

I added the line:

<meta http-equiv="cache-control" content="cache, store, public" />

but still got:

Document Expired

This document is no longer available.

The requested document is not available in Firefox's cache.

   As a security precaution, Firefox does not automatically re-request sensitive documents.
   Click Try Again to re-request the document from the website.
I added the line: <meta http-equiv="cache-control" content="cache, store, public" /> but still got: Document Expired This document is no longer available. The requested document is not available in Firefox's cache. As a security precaution, Firefox does not automatically re-request sensitive documents. Click Try Again to re-request the document from the website.
jscher2000
  • Top 10 Contributor
5899 solutions 48488 answers

Yes, the important headers are sent first before the HTML document even starts. The std.php include and the meta tag cannot override them. The workaround will require some PHP code at the very top of search.php.

Yes, the important headers are sent first before the HTML document even starts. The std.php include and the meta tag cannot override them. The workaround will require some PHP code at the very top of search.php.

Question owner

What needs to be sent before the HTML headers and will it affect setting cookies?

What needs to be sent before the HTML headers and will it affect setting cookies?
jscher2000
  • Top 10 Contributor
5899 solutions 48488 answers

Cookies have their own header, expiration date, and so forth. Those are not affected by the page's cache settings.


Could you check the first response to this StackOverflow question: Setting up Expire Headers with PHP. It mentions the exact headers sent with your page as matching either of these settings:

session_cache_limiter = nocache -- in your PHP configuration
session_cache_limiter("nocache"); -- in your search.php script

If you have the second line in your script, you can remove it or edit it. If it's in your configuration file, the suggested override is to start your search.php script with a new line:

<?php
session_cache_limiter(false);

Does that work?


If you want to create global settings, this article sets out what to add to .htaccess -- except in your case, you would put php in the "2 hour" category:

http://www.askapache.com/hacking/speed-site-caching-cache-control.html

I haven't tried that myself.


If you need to send individual cache-control and expires headers from PHP for finer control, I haven't looked up the syntax, but I'm sure you can find it with some searches.

Cookies have their own header, expiration date, and so forth. Those are not affected by the page's cache settings. ---- Could you check the first response to this StackOverflow question: [http://stackoverflow.com/questions/5776971/setting-up-expire-headers-with-php Setting up Expire Headers with PHP]. It mentions the exact headers sent with your page as matching either of these settings: session_cache_limiter = nocache -- in your PHP configuration session_cache_limiter("nocache"); -- in your search.php script If you have the second line in your script, you can remove it or edit it. If it's in your configuration file, the suggested override is to start your search.php script with a new line: &lt;?php session_cache_limiter(false); Does that work? ---- If you want to create global settings, this article sets out what to add to .htaccess -- except in your case, you would put php in the "2 hour" category: http://www.askapache.com/hacking/speed-site-caching-cache-control.html I haven't tried that myself. ---- If you need to send individual cache-control and expires headers from PHP for finer control, I haven't looked up the syntax, but I'm sure you can find it with some searches.

Question owner

Thank you very much. I tried adding the line:

session_cache_limiter(false);

to our std.php as the first php line, but that did not fix it.

I then pulled our php.ini file and found :

session.cache_limiter = nocache

and changed it to:

session.cache_limiter = public

and that immediately fixed it.

Thank you again. We can continue to recommend Firefox as the browser of choice!!

Thank you very much. I tried adding the line: session_cache_limiter(false); to our std.php as the first php line, but that did not fix it. I then pulled our php.ini file and found : session.cache_limiter = nocache and changed it to: session.cache_limiter = public and that immediately fixed it. Thank you again. We can continue to recommend Firefox as the browser of choice!!
klangan 1 solutions 3 answers

This is caused by Firefox honoring the instructions of the page not to cache or store it, so every reload requires another request to the web server.


This is a big problem for me. I do a lot of online editing and often have to look back several pages to get some code/css I deleted on a previous page that didn't think I needed any longer or to fix a mistake that didn't crop up until several saves later. IE behaved this way which is a major reason I switched to firefox long ago.

Looking at my headers there is no expiration date set so firefox isn't exactly *honoring* any instructions, it's simply not caching by default even though I have firefox set to use the cache

We've implemented all the "anticache" instructions where we need them, the new firefox model is the inverse of what we actually need. PLEASE PLEASE cache by default like you used to or at least make this new behavior optional. I've lost several hours of work/code and css because of this new model.

Here's an example of my headers and as you'll see those no expiration instructions: http://mydomain/cgi-bin/mypage.cgi POST /cgi-bin/page.cgi HTTP/1.1 Host: www.mydomain.com User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://www.mydomain.com/cgi-bin/mypage.cgi Cookie: __utma= Authorization: Basic xxxxxx== Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 6644 do=page&content=THEPOSTEDCONTENT HTTP/1.1 200 OK Date: Thu, 18 Sep 2014 17:44:45 GMT Server: Apache Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 4743 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: text/html; charset=ISO-8859-1

---------------------------------------------- This is caused by Firefox honoring the instructions of the page not to cache or store it, so every reload requires another request to the web server. ---------------------------------------------- This is a big problem for me. I do a lot of online editing and often have to look back several pages to get some code/css I deleted on a previous page that didn't think I needed any longer or to fix a mistake that didn't crop up until several saves later. IE behaved this way which is a major reason I switched to firefox long ago. Looking at my headers there is no expiration date set so firefox isn't exactly *honoring* any instructions, it's simply not caching by default even though I have firefox set to use the cache We've implemented all the "anticache" instructions where we need them, the new firefox model is the inverse of what we actually need. PLEASE PLEASE cache by default like you used to or at least make this new behavior optional. I've lost several hours of work/code and css because of this new model. Here's an example of my headers and as you'll see those no expiration instructions: http://mydomain/cgi-bin/mypage.cgi POST /cgi-bin/page.cgi HTTP/1.1 Host: www.mydomain.com User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64; rv:32.0) Gecko/20100101 Firefox/32.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: en-US,en;q=0.5 Accept-Encoding: gzip, deflate Referer: http://www.mydomain.com/cgi-bin/mypage.cgi Cookie: __utma= Authorization: Basic xxxxxx== Connection: keep-alive Content-Type: application/x-www-form-urlencoded Content-Length: 6644 do=page&content=THEPOSTEDCONTENT HTTP/1.1 200 OK Date: Thu, 18 Sep 2014 17:44:45 GMT Server: Apache Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 4743 Keep-Alive: timeout=15, max=100 Connection: Keep-Alive Content-Type: text/html; charset=ISO-8859-1
jscher2000
  • Top 10 Contributor
5899 solutions 48488 answers

Helpful Reply

Hi klangan, did you notice this issue starting with Firefox 32?

A user who has been investigating this in detail reports that when the cache is full Firefox will start displaying the Document Expired page, suggesting that Firefox's caching behavior has changed in Firefox 32. Related thread: Firefox 32 always gives "Document expired" every single time I hit the Back key to return to search results.

Hi klangan, did you notice this issue starting with Firefox 32? A user who has been investigating this in detail reports that ''when the cache is full'' Firefox will start displaying the Document Expired page, suggesting that Firefox's caching behavior has changed in Firefox 32. Related thread: [https://support.mozilla.org/questions/1019567 Firefox 32 always gives "Document expired" every single time I hit the Back key to return to search results.]
klangan 1 solutions 3 answers

Chosen Solution

Yes, Firefox 32 is when this behavior began.

I just went in and checked Tools->Options->Override Automatic Cache Management and for the moment at least, the problem has disappeared.

Thanks, hope this solves the problem.

Yes, Firefox 32 is when this behavior began. I just went in and checked Tools->Options->Override Automatic Cache Management and for the moment at least, the problem has disappeared. Thanks, hope this solves the problem.