New and Improved 3.13 Beta. Highlights: Shareable filters and dashboards and lots of other goodies. Any feedback can be raised as JIRA issues in the JIRA project.
Issue Details (XML | Word | Printable)

Key: JRA-14031
Type: Bug Bug
Status: Open Open
Priority: Major Major
Assignee: Unassigned
Reporter: Bob Kerns
Votes: 4
Watchers: 4
Operations

If you were logged in you would be able to see more operations.
JIRA

Form data lost when using back and forward web browser buttons

Created: 25/Nov/07 02:36 AM   Updated: 12/Aug/08 07:45 PM
Component/s: UI / Usability, Web interface
Affects Version/s: 3.12
Fix Version/s: 3.13.x

Time Tracking:
Not Specified

Environment:
This very Jira instance!
Firefox 2.0.0.9 on Windows
Issue Links:
Duplicate
 
Reference
 

Participants: Anton Mazkovoi [Atlassian], Bob Kerns, Bob Kerns and Jed Wesley-Smith [Atlassian]
Since last comment: 15 weeks, 3 days ago
Labels:


 Description  « Hide
I composed a somewhat lengthy, detailed message about Fisheye performance issues, including solutions.

Then a stray touch on my touch pad led to Firefox navigating to the previous screen, when I was about to find the Create button!

Attempting to return forward to the message I was entering failed, because Firefox informed me that the page was the result of a POST, and did I want to resubmit?

Well, resubmitting causes the previous form content to go away! And not resubmitting doesn't get you back to it, either.

When a POST takes you to a form, it should do so by first doing a redirect to a GET that serves up the form. Otherwise, you'll get exactly what I got!

It seems like an extraneous round-trip with the browser, but it's really not. It's important for usability.



 All   Comments   Work Log   Change History      Sort Order: Ascending order - Click to sort in descending order
Anton Mazkovoi [Atlassian] added a comment - 25/Nov/07 09:43 PM
Bob, thanks for reporting.

I think this is also fixed by removing the "no-store" from the Cache-Control header when serving pages in JIRA.

We need to look into this anyway.

Chat to Chris Owen about removing the "no-store" from the Cache-Control header.


Anton Mazkovoi [Atlassian] added a comment - 30/Mar/08 05:20 PM
When implementing this, check JRA-14724 as it could outline a case why removing "no-store" would break things.

Jed Wesley-Smith [Atlassian] added a comment - 12/May/08 07:09 PM
JRA-14724 is not related to cache control headers.

Bob Kerns added a comment - 12/May/08 08:46 PM
I don't think anything you do to the Cache-Control header is going to fully address the issue.

Yes,, it will keep the form from becoming unpopulated. However, won't you still have the problem of it asking for permission to re-post? Or will it simply display the cached result on navigating the history back to a POST?

I haven't tried every combination of browser and Cache-Control, and don't have time to set up the experiments myself, but I do know a redirect works wonders, though at the cost of an extra round-trip.


Jed Wesley-Smith [Atlassian] added a comment - 12/May/08 09:03 PM
Removing no-store from the cache-control header allows the browser to make the decision not to re-post the form at all. One of our developers wrote an excellent blog post on the issue.

Bob Kerns added a comment - 12/May/08 10:13 PM - edited
Ah, here's the important point from RFC 2616, which makes this legitimate:

13.13 History Lists

User agents often have history mechanisms, such as "Back" buttons and history lists, which can be used to redisplay an entity retrieved earlier in a session.

History mechanisms and caches are different. In particular history mechanisms SHOULD NOT try to show a semantically transparent view of the current state of a resource. Rather, a history mechanism is meant to show exactly what the user saw at the time when the resource was retrieved.

By default, an expiration time does not apply to history mechanisms. If the entity is still in storage, a history mechanism SHOULD display it even if the entity has expired, unless the user has specifically configured the agent to refresh expired history documents.

This is not to be construed to prohibit the history mechanism from telling the user that a view might be stale.

Now, that "if the entity is still in storage" part would seem to give browsers a little wiggle room, but the intent is clear.

Of course, this is moot if the browsers don't implement it. I take it you've verified they do.

Always good to learn something new! (Even about something old, like HTTP/1.1 caching!)

Thanks!