我有一个网页实现了发布/重定向/获取模式以避免在简单的 CRUD 应用程序中重复发布。
这里预期的请求/响应序列是:
- 浏览器通过以下方式发送数据
POST
- 服务器修改数据库,响应状态
302 Moved Temporarily
and a Location
header
- 浏览器遵循重定向
GET
- 服务器响应更新后的页面
这就是它应该如何工作的——而且确实如此,例如在 Chrome 中。
然而,Internet Explorer 9 将步骤 3 作为POST
,也(包括完整的表单数据集!)。为什么?我应该怎么做才能使用它GET
?
我应该补充一点,除了查询字符串之外,重定向会转到与表单目标相同的位置。
我试过了:
- 所有可用的渲染模式(IE7、IE8、IE9、Quirks、Standards、Compat)
- 完整的 DOCTYPE
- 相对 URL 或绝对 URL
Location
header
- HTTP Status 303(只是为了看看这是否有什么不同)
如果您想要 GET,正确的状态代码是303,尽管 301 和 302 也会在常见浏览器中执行您想要的操作。
如果这不起作用,则可能是其他地方出了问题。 HTTP 跟踪有助于查找问题所在。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)