5

我的应用程序通过响应标头禁用浏览器上的缓存,然后使用 Post-Redirect-Get 模式启用后退按钮以“重新获取”当前页面。
但是,现在使用 Firefox 12 和 IE 8 重新测试时,我没有看到我期望的结果(或者我之前在 IE 6 中看到的结果)。

选择后退按钮后,我可以看到浏览器正在尝试执行原始请求(Post),而不是重定向请求(Get)。当我查看 Firebug 的网络选项卡上的请求时,我看到以下内容:

重定向后获取

看起来浏览器将 Post 和 Get 视为相同的请求,因此选择后退按钮正在重新提交 Post:

返回按钮的结果

我正在使用 JSF,但我认为这是一个浏览器问题。有谁知道为什么浏览器不执行重定向页面的获取?

4

1 回答 1

4

它工作正常。后退按钮重新执行“POST accountDetails.xhtml”之前的请求,该请求未在您的第一个屏幕截图中列出,但根据第二个屏幕截图显然(并且在逻辑上)是“GET accountDetails.xhtml”。您显然在与该视图关联的 bean 中或在某些过滤器中进行一些检查并重定向到“registrationWelcome.xhtml”。第一个屏幕截图中的“POST accountDetails.xhtml”是当前请求,它已被重定向到“reviewInfo.xhtml”。

后退按钮不会重新执行重定向。这是您自己的代码。后退按钮也不会重新执行 POST 请求,这在第二个屏幕截图中得到了确认。

于 2012-05-31T19:05:52.143 回答