Php 即使在提交基于PRG的表单时,Chrome也会跟踪2条历史记录条目
当提交一个实现“Post+相同页面重定向+Get”方法的表单时,Chrome会跟踪两个历史记录条目,而不是一个 证明这种奇怪行为的步骤。 1-我浏览到表单页面裸体表单页面:demo.html。 裸体表格页: 我填表格。 填写表格: 我提交表格。 已提交-因此为空-表单(位于demo.html,从基于PRG的重定向重定向到相同的page.php): 4-我单击浏览器的“后退”按钮一次 Chrome跳回已填充的表单(步骤) 5-我需要再次点击浏览器的“后退”按钮,以在进入该表单页面之前到达我正在浏览的页面(比如我的浏览器的“谷歌”默认页面): Chrome(版本25.0.1364.172)和Safari(版本6.0.2)都会出现这种情况 我所期待的 我希望有一个浏览器的“返回”点击,以达到表单之前的页面。 这实际上就是Firefox(19.0.2)、Opera(12.11)和IE(从版本6到最新版本10)的表现 我的源代码 demo.htmlPhp 即使在提交基于PRG的表单时,Chrome也会跟踪2条历史记录条目,php,forms,node.js,google-chrome,browser-history,Php,Forms,Node.js,Google Chrome,Browser History,当提交一个实现“Post+相同页面重定向+Get”方法的表单时,Chrome会跟踪两个历史记录条目,而不是一个 证明这种奇怪行为的步骤。 1-我浏览到表单页面裸体表单页面:demo.html。 裸体表格页: 我填表格。 填写表格: 我提交表格。 已提交-因此为空-表单(位于demo.html,从基于PRG的重定向重定向到相同的page.php): 4-我单击浏览器的“后退”按钮一次 Chrome跳回已填充的表单(步骤) 5-我需要再次点击浏览器的“后退”按钮,以在进入该表单页面之前到达我
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<form action="redirect-to-same-page.php" method="post">
Type something and submit: <input type="text" name="something" /> <!-- optional: autocomplete="off" -->
<input type="submit" value="submit" />
</form>
</body>
</html>
键入并提交:
redirect-to-same-page.php
<?php
header('Location: demo.html', true, 302); // not any of true/false 302/303 combinations are working
// not working either: header("Refresh: 0; demo.html");
exit;
?>
Chrome的web inspector揭示了什么。。。
1提交前:
2提交后:
我的问题
我读过类似的问题和可能的答案,但没有一个能解决我的问题
这种行为是Chrome/Safari的问题还是功能*?(*如果提交失败,将保留您填写的表格的完整备份)
node.js或php是否有正确或更具防御性的代码来避免这种行为
谢谢你的帮助