我尝试在 PHP 中实现 POST/REDIRECT/GET 设计模式,当我重定向到完全相同的页面时,它适用于 Safari,但不适用于 Google Chrome(适用于 Mac)。如果我稍微改变 URL(比如添加一个斜杠),它就可以正常工作。
这是一个功能齐全的示例:
<?php
if(TRUE === isset($_POST['submit'])) {
header('Location: http://' . $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'], true, 303);
exit();
}?>
<html><head></head><body>
<form action="" method="post"><input type="submit" name="submit" value="submit" /></form>
</body></html>
当我转到页面并单击提交按钮然后刷新页面时,我得到一个对话框,要求我确认重新提交表单数据。我所有的搜索都表明,上面的代码是实现 POST/REDIRECT/GET 的正确方法,并且应该可以工作(在 Safari 中也可以),但它不适用于 Mac 上的 Chrome。