![ユーザーがリクエストを送信する前に Chrome がリクエストを送信しているのではないかと思います。これは可能なのでしょうか?](https://rvso.com/image/1595492/%E3%83%A6%E3%83%BC%E3%82%B6%E3%83%BC%E3%81%8C%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%82%92%E9%80%81%E4%BF%A1%E3%81%99%E3%82%8B%E5%89%8D%E3%81%AB%20Chrome%20%E3%81%8C%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%82%92%E9%80%81%E4%BF%A1%E3%81%97%E3%81%A6%E3%81%84%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%84%E3%81%8B%E3%81%A8%E6%80%9D%E3%81%84%E3%81%BE%E3%81%99%E3%80%82%E3%81%93%E3%82%8C%E3%81%AF%E5%8F%AF%E8%83%BD%E3%81%AA%E3%81%AE%E3%81%A7%E3%81%97%E3%82%87%E3%81%86%E3%81%8B%3F.png)
この Web サイトを開発しているときに、Chrome で奇妙な動作に気付きました。Tomcat を再起動すると、データベースが再作成されます (テスト目的のため)。そのため、データベースにデータを入力する URL を作成しました。
問題は、この URL を入力しているときに Tomcat のアクセス ログを確認すると、送信していないリクエストが何らかの理由で自動的に送信されていることです。サーバーの出力ログを見ると、この「ゴースト リクエスト」が送信されたことが確認できます。
入力した URL を送信すると、リクエストが繰り返され、データベースに何らかの制約があり値が繰り返されるため、エラー ページが表示されます。
この動作は、何らかの形で予想されているか、またはどこかに文書化されていますか (ある場合、なぜ一貫性がないのでしょうか)? 誰かがこれに似たようなことを経験したことがありますか?
答え1
Chrome がリクエストを早めに行うかどうかはわかりませんが、そうする可能性はありますし、問題にはならないはずです。
HTTP GETリクエストはべき等性つまり、リクエストを複数回行うことは、リクエストを 1 回だけ行うことと何ら変わりません。したがって、Chrome (または他のブラウザ) が GET リクエストを早めに実行してページを事前読み込みし、ユーザーが実際に Enter キーを押したときに読み込みが速く見えるようにしたい場合、そうすることで悪影響が出ることはありません。
データベースにデータを入力するスクリプトは、GET リクエストで作成されたときはデータベースに対して何も実行せず、代わりに POST リクエストを待機する必要があります。GET リクエストの場合は、クリックできる送信ボタンのあるフォームを出力するだけで、データベースにデータを入力する POST リクエストが作成されます。