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 )
GET:配列 ( )
ただし、ctrl+クリックを使用すると、新しいタブに次のように表示されます。
POST:配列 ( )
GET:配列 ( )
私の質問は、これは通常の動作ですか、それとも Chrome のバグですか (私のバージョンは 21.0.1180.83 m です)。とにかくこれが起こらないようにするために、ユーザーに何らかのエラーページを表示して、ユーザーをリダイレクトし、フォームの送信を新しいタブで開かないように要求する必要はありません(醜い!)