我刚刚注意到 Chrome 的一些奇怪行为。在我的网站上,有一个页面有一个表单,该表单向网站的安全部分发送 POST。但是,如果我使用 ctrl+左键单击(在提交按钮上)在 Chrome 中提交表单,它会打开一个新窗口(如预期的那样),但请求是 GET 请求而不是 GET 请求,并且没有发送表单数据。我试图通过只用一个简单的表格制作一个测试页面来排除所有其他事情:
<form method="post" action='https://secure.mysite.com/formtest2.php' target='_top'>
<input type='text' name='element' value='blabla' />
<input type='submit' value='submit' />
</form>
和一个接收页面:
<?php
print "POST:";
print_r($_POST);
print "<br/>GET:";
print_r($_GET);
?>
当我单击提交按钮(在 Chrome 中)时,一切都按预期工作,我得到:
POST:Array ( [my-element] => blabla )
获取:数组()
但是,当我使用 ctrl+click 时,我会在新选项卡中看到:
POST:数组 ( )
获取:数组()
所以我的问题是,这是正常行为还是 Chrome 中的错误(我的版本是 21.0.1180.83 m)?并且无论如何都可以防止这种情况发生,所以我不必向用户显示某种错误页面,将他重定向回来并要求不要在新选项卡中打开表单提交(丑陋!)