PHP Post/Redirect/Get失败与谷歌浏览器


PHP Post/Redirect/Get Failing with Google Chrome

我曾尝试在PHP中实现POST/REDIRECT/GET设计模式,当我重定向到完全相同的页面时,它与Safari一起工作,但不是Google Chrome (for 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。

你的代码似乎还好,我猜你所经历的是有关问题177855:错误处理重定向在Chrome 25

刷新你发布到的页面会给你那个弹出框,因为浏览器想知道它是否应该重新发送最初让你到达那个页面的数据。这是所有形式都会发生的。你说它不能在chrome中工作。你得到一个错误吗?它只是没有重定向吗?

另外,使用锚标记将某人直接链接到新页面或使用迂回的方式,例如:

<a href="http://<?php echo $_SERVER['SERVER_NAME'] . $_SERVER['REQUEST_URI'] ?>?act=forward">Forward</a>

检查$_GET["act"]是否等于"forward",而不是检查表单是否已经发送。