我的应用程序通过响应 header 禁用浏览器缓存,然后使用 Post-Redirect-Get 模式启用后退按钮以“重新获取”当前页面。
但是,现在使用 Firefox 12 和 IE 8 重新测试时,我没有看到预期的结果(或者我之前在 IE 6 上看到的结果)。
选择后退按钮后,我可以看到浏览器正在尝试执行原始请求(Post),而不是重定向请求(Get)。当我查看 Firebug 网络选项卡上的请求时,我看到以下内容:
看起来浏览器将 Post 和 Get 视为相同的请求,因此选择后退按钮是重新提交 Post:
我正在使用 JSF,但我认为这是浏览器问题。有谁知道为什么浏览器不执行重定向页面的获取?
最佳答案
它工作正常。后退按钮重新执行之前“POST accountDetails.xhtml”的请求,该请求未在您的第一个屏幕截图中列出,但根据第二个屏幕截图显然(逻辑上)是“GET accountDetails.xhtml”。您显然在与该 View 关联的 bean 中或在某些过滤器中进行一些检查并重定向到“registrationWelcome.xhtml”。第一个屏幕截图中的“POST accountDetails.xhtml”是已重定向到“reviewInfo.xhtml”的当前请求。
后退按钮不会重新执行重定向。这是您自己的代码。后退按钮也不会重新执行 POST 请求,这在第二个屏幕截图中得到了确认。
关于http - Post-Redirect-Get 后的后退按钮行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10837981/