2

在我的 MVC spring 应用程序中,我使用 post 方法将表单发送到页面,以使用一些参数执行搜索。搜索结果是一个列表,并且对于每个条目都可以导航到详细信息页面。它工作正常,但是当用户尝试使用返回浏览器按钮(或 Javascript)返回结果页面时,我收到“过期页面”错误。刷新页面,它重新执行帖子提交并且工作正常。

为了防止这个错误,我添加了

response.setHeader("Cache-Control", "no-cache");

到搜索控制器,Safari 和 Firefox 一切正常,但是当我尝试使用 IE(8 和 9)执行 Web 应用程序时,出现相同的“过期页面”错误。

转到详细信息页面并返回而不会出现任何错误的正确方法是什么?

谢谢你的时间!
安德烈亚

4

2 回答 2

3

正确的做法是使用 GET 而不是 POST:搜索是幂等操作,不会导致服务器发生任何变化,此类操作应使用 GET 完成。

于 2012-06-20T17:58:14.033 回答
2

不使 POST 请求过期似乎破坏了 POST 的想法

根据 RFC 2616,POST 方法应该用于请求是非幂等的任何上下文:也就是说,每次执行它都会导致服务器状态发生变化,例如向博客文章提交评论或投票在线投票。

相反,我会重组您查看详细记录的方式,可能会使用DIV不刷新显示结果的基础页面的覆盖。对于许多现代 Web 应用程序,使用 BACK 按钮可能会导致页面流出现问题。

于 2012-06-20T14:15:36.443 回答