http - Post-Redirect-Get 后的后退按钮行为

标签 http jsf post-redirect-get

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

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

Post-Redirect-Get

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

Result of Back Button

我正在使用 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/

相关文章:

java - 想要使用Web服务但 "cannot be resolved to a type"

javax.net.ssl.HttpsURLConnection 何时触发请求

eclipse - 无法在 Eclipse 中检索请求的 URL 错误

jsf - 切换 p :fieldset from another button

asp.net-mvc - PRG 模式有没有在验证失败时不重定向的名称?

http - PUT、POST 和 PATCH 之间有什么区别?

ajax - 如何在 Webbrowser 中捕获 AJAX 请求

jsf - IntelliJ 中的 EL 属性不足

java - DIY 表单处理、PRG、验证

c# - 带子项的 MVC PRG 模式