사용자가 요청을 제출하기 전에 크롬이 요청을 보내는 것으로 의심됩니다. 이것이 가능합니까?

사용자가 요청을 제출하기 전에 크롬이 요청을 보내는 것으로 의심됩니다. 이것이 가능합니까?

저는 이 웹사이트를 개발하고 있는데 크롬에서 이상한 동작을 발견했습니다. Tomcat을 다시 시작하면 데이터베이스가 다시 생성되고(porpuses 테스트용) 이로 인해 데이터베이스를 채우는 URL이 생성됩니다.

문제는 가끔 이 URL을 입력할 때 Tomcat 액세스 로그를 확인했는데 제출하지 않은 요청이 어떻게든 자동으로 제출되었다는 것입니다. 서버 출력 로그는 이 "Ghost 요청"이 전송되었음을 확인합니다.

입력한 URL을 제출하면 요청이 반복되고 데이터베이스에 일부 제약 조건이 있고 값이 반복되기 때문에 오류 페이지가 표시됩니다.

이 동작이 어떻게든 예상되었거나 어디에서나 문서화되어 있습니까(만약 그렇다면 왜 일관성이 없습니까?)? 누군가 비슷한 일을 경험한 적이 있나요?

답변1

크롬이 일찍 요청을 하는지는 모르겠지만 문제가 될 수도 있고 문제가 되어서도 안 됩니다.

HTTP GET 요청은 다음과 같이 간주됩니다.멱등성, 이는 기본적으로 여러 번 요청하는 것이 한 번만 요청하는 것과 다르지 않아야 함을 의미합니다. 따라서 Chrome(또는 다른 브라우저)이 GET 요청을 조기에 만들어 페이지를 미리 로드하여 사용자가 실제로 Enter 키를 눌렀을 때 더 빠르게 로드되는 것처럼 보이도록 하려는 경우 그렇게 하면 부정적인 영향이 있어서는 안 됩니다.

데이터베이스를 채우는 스크립트는 GET 요청으로 생성될 때 데이터베이스에 아무 작업도 수행해서는 안 되며 대신 POST 요청을 기다려야 합니다. GET 요청의 경우 클릭하면 데이터베이스를 채우는 POST 요청이 가능한 제출 버튼이 있는 양식을 출력하게 됩니다.

관련 정보