在处理POST请求后,我正在做一个非常标准的重定向到同一页面的事情,这样如果用户重新加载页面,用户就不会得到"确认表单重新提交"(或等效)对话框.
我正在使用303响应状态代码.
这是代码:
header( "HTTP/1.1 303 See Other" );
header( "Location: " . $_SERVER['REQUEST_URI'] );
exit();
Run Code Online (Sandbox Code Playgroud)
这在Safari和FF中按预期工作.Chrome会弹出"确认表单重新提交"对话框.
在Chrome中,我可以使用网络检查器查看303重定向确实已发出,并且在我的初始POST后有一个GET.
然而,如果我在那时尝试重新加载页面,我会收到"确认表单重新提交".
如果我通过添加虚假查询参数来修改URL,则不会发生这种情况.那是...
header( "HTTP/1.1 303 See Other" );
header( "Location: " . $_SERVER['REQUEST_URI'] . '?foo' );
exit();
Run Code Online (Sandbox Code Playgroud)
......工作得很好.
Chrome是否试图过于聪明并且缩短同一页面的重新加载?或者这是一个已知的问题?我花了一些时间环顾四周,但除了一百万只需要使用PRG模式的人之外,没什么.
Oli*_*ver 10
这似乎是Chrome 25中的一个错误.我使用Chrome 24在虚拟框中测试了它并更新到Chrome 25.
Chrome 24 =>没有对话框
Chrome 25 =>对话框
也许你应该提交一个bug.:-)
| 归档时间: |
|
| 查看次数: |
15876 次 |
| 最近记录: |