我有一个实现 post / redirect / get 模式的网页,以避免在简单的CRUD应用程序中发布双重帖子。
这里的预期请求/响应序列是:
POST
302 Moved Temporarily
和Location
标题回复GET
这就是它应该如何工作 - 例如,它确实在Chrome中运行。
然而,Internet Explorer 9也将第3步发送为POST
(包括完整的表单数据集!)。为什么?我该怎么做才能使用GET
?
我应该补充说,除了查询字符串之外,重定向会转到与表单目标相同的位置。
我试过了:
Location
标题答案 0 :(得分:4)
如果您想要GET,正确的状态代码是 303 ,尽管301和302也可以在常见浏览器中执行您想要的操作。
如果这不起作用,其他可能是错误的。 HTTP跟踪有助于找到错误。
答案 1 :(得分:3)
我不确定,但似乎IE9在重定向30x后实际上并没有发送“POST” - 它只是在内部调试器中显示它。
答案 2 :(得分:2)
我注意到了类似的行为。事实证明,IE11的内部调试器报告了一个POST,但是使用第三方应用程序(Fiddler),它将请求报告为GET。如果你看到一个POST响应303/302,请用外部应用程序仔细检查。