반복 형식 제출은 다중 사용자 웹 응용 프로그램에서 가장 일반적인 문제이며 많은 문제를 일으 킵니다. 중복 제출 문제에 직면하는 많은 응용 프로그램 시나리오가 있습니다.
제출 버튼을 두 번 클릭하십시오. 새로 고침 버튼을 클릭하십시오. 브라우저 뒤로 버튼을 사용하여 이전 작업을 반복하여 양식을 반복적으로 제출했습니다. 브라우저 기록을 사용하여 제출 양식을 반복하십시오. 브라우저에서 HTTP 요청을 반복했습니다.
형태의 반복적 인 제출을 방지하는 몇 가지 방법
1. 제출 버튼을 비활성화합니다 . JavaScript를 사용하여 양식을 제출 한 후 제출 버튼을 비활성화하십시오. 이 메소드는 참을성이없는 사용자가 버튼을 여러 번 클릭하는 것을 방지합니다. 그러나 문제가 있습니다. 클라이언트가 JavaScript를 금지하면이 메소드가 유효하지 않습니다.이전 기사는 일부 jQuery 플러그인을 사용하는 것이 잘 작동한다고 말했습니다.
2.post/redirect/get 모드 . 제출 후 페이지 리디렉션을 수행하며 PRG (Post-Redirect-Get) 모드라고합니다. 요컨대, 사용자가 양식을 제출하면 클라이언트 리디렉션을 수행하고 제출 성공 정보 페이지로 이동합니다.이렇게하면 F5를 누르는 사용자가 발생하는 반복적 인 제출을 피할 수 있으며, 브라우저 양식의 반복적 인 제출에 대한 경고는 없으며 브라우저의 전진 및 보복으로 인한 동일한 문제를 제거 할 수도 있습니다.
3. 세션에 특별 로고를 저장하십시오 . 양식 페이지가 요청되면, 세션에 존재하고 양식의 숨겨진 필드에 배치되는 특수 문자 플래그 문자열이 생성됩니다. 처리 양식 데이터를 수락 할 때 식별 문자열이 존재하는지 확인하고 세션에서 즉시 삭제 한 다음 데이터를 정상적으로 처리하십시오.양식 제출에 유효한 플래그 문자열이 없다는 것을 알게되면 양식이 제출 되었으며이 제출이 무시되었음을 의미합니다.
이를 통해 웹 애플리케이션이보다 고급 XSRF 보호를 제공합니다.
4. 데이터베이스에 제약 조건을 추가하십시오. 데이터베이스에 고유 한 제약 조건을 추가하거나 중복 데이터를 방지하기 위해 고유 한 인덱스를 작성하십시오. 이것은 반복적 인 데이터 제출을 방지하는 가장 효과적인 방법입니다.위는이 4 가지 방법에 대한 소개입니다. 더 나은 솔루션이 있으면 알려 주시면이 기사가 지속적으로 업데이트됩니다.