拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
버튼을 클릭한 후 즉시 비활성화하세요. 제출에 실패하면 버튼을 복원하세요. 그렇지 않으면 성공 페이지로 리디렉션됩니다.
또는 클릭하면 마스크가 팝업됩니다.
그러나 위의 두 솔루션 모두 js가 필요합니다. 왜 js를 사용하고 싶지 않습니까?
1.JS 버튼으로 반복 클릭 방지
2. 서버측 캐시 제어, 라이브러리를 반복적으로 작성하는 방법
3. 데이터베이스에 고유한 색인을 생성합니다(예: 게시물 제목이 고유하고 반복될 수 없음)
프런트엔드와 백엔드에서 제어 가능:
사용자가 게시를 클릭하면 '게시' 버튼을 비활성화합니다.
게시물 요청이 전송되면 해당 사용자가 동일한 제목과 내용의 게시물을 보냈는지 확인하세요. 그렇다면 중복 게시물 생성을 금지하세요
템플릿 렌더링 시 ID를 생성한 후 제출 시 함께 제출한 후 백엔드와 비교하여 전달된 ID가 올바르지 않으면 처리가 무시되도록 할 수 있습니다.
먼저 더 간단한 해결책은 디바운스 기능을 사용하여 DOM 콜백 트리거 빈도를 제한하는 것입니다.
두 번째로, 이 시대에 사용자가 js를 비활성화하는 상황을 여전히 고려해야 한다면 프런트엔드에서는 그렇게 하지 마세요.
이 문제는 프런트엔드에만 의존해서는 해결될 수 없습니다.
캐싱을 추가하고, 단일 머신에는 맵을 사용하고, 분산 캐싱에는 Redis를 사용하세요.
Mysql 저장 프로시저를 사용하여 동시성 부담을 데이터베이스에 넘겨주세요
잠금, 낙관적 잠금 또는 비관적 잠금
고유 키
현재 페이지는 제출 시 고유 ID를 생성합니다. 예를 들어 laravel의 양식 제출 페이지에는 csrf_token
laravel
csrf_token
그런 다음 배경에 자신만의 csrf를 작성하세요. 콘텐츠를 제출할 때 키를 가져오거나 다르면 키를 삭제하세요. 중복 제출
csrf
숨겨진 필드에 있는 임의의 문자열을 지나서 양식 양식을 게시하고 세션에 넣습니다. 프로그램이 이 임의의 문자열을 수신하여 세션의 문자열과 비교할 때 동일하면 제출하고 동일하지 않으면 오류 비교 메시지가 표시됩니다.
1. JS 검증, 제출 후 제출 버튼 비활성화 2. 서버 측 검증, 페이지가 새로 고쳐질 때마다 페이지에 토큰이 생성됩니다. 토큰이 유효한지 판단한 후 데이터를 처리한 후 토큰을 파기합니다. 프런트엔드에서 반복적으로 제출하면 토큰이 파기되므로 절대 처리되지 않습니다.
버튼을 클릭한 후 즉시 비활성화하세요. 제출에 실패하면 버튼을 복원하세요. 그렇지 않으면 성공 페이지로 리디렉션됩니다.
또는 클릭하면 마스크가 팝업됩니다.
그러나 위의 두 솔루션 모두 js가 필요합니다. 왜 js를 사용하고 싶지 않습니까?
1.JS 버튼으로 반복 클릭 방지
2. 서버측 캐시 제어, 라이브러리를 반복적으로 작성하는 방법
3. 데이터베이스에 고유한 색인을 생성합니다(예: 게시물 제목이 고유하고 반복될 수 없음)
프런트엔드와 백엔드에서 제어 가능:
사용자가 게시를 클릭하면 '게시' 버튼을 비활성화합니다.
게시물 요청이 전송되면 해당 사용자가 동일한 제목과 내용의 게시물을 보냈는지 확인하세요. 그렇다면 중복 게시물 생성을 금지하세요
템플릿 렌더링 시 ID를 생성한 후 제출 시 함께 제출한 후 백엔드와 비교하여 전달된 ID가 올바르지 않으면 처리가 무시되도록 할 수 있습니다.
먼저 더 간단한 해결책은 디바운스 기능을 사용하여 DOM 콜백 트리거 빈도를 제한하는 것입니다.
두 번째로, 이 시대에 사용자가 js를 비활성화하는 상황을 여전히 고려해야 한다면 프런트엔드에서는 그렇게 하지 마세요.
이 문제는 프런트엔드에만 의존해서는 해결될 수 없습니다.
캐싱을 추가하고, 단일 머신에는 맵을 사용하고, 분산 캐싱에는 Redis를 사용하세요.
Mysql 저장 프로시저를 사용하여 동시성 부담을 데이터베이스에 넘겨주세요
잠금, 낙관적 잠금 또는 비관적 잠금
고유 키
현재 페이지는 제출 시 고유 ID를 생성합니다. 예를 들어
이 있습니다.laravel
의 양식 제출 페이지에는csrf_token
그런 다음 배경에 자신만의
csrf
를 작성하세요. 콘텐츠를 제출할 때 키를 가져오거나 다르면 키를 삭제하세요. 중복 제출숨겨진 필드에 있는 임의의 문자열을 지나서 양식 양식을 게시하고 세션에 넣습니다.
이 세션을 재설정하세요.프로그램이 이 임의의 문자열을 수신하여 세션의 문자열과 비교할 때 동일하면 제출하고 동일하지 않으면 오류 비교 메시지가 표시됩니다.
1. JS 검증, 제출 후 제출 버튼 비활성화
2. 서버 측 검증, 페이지가 새로 고쳐질 때마다 페이지에 토큰이 생성됩니다. 토큰이 유효한지 판단한 후 데이터를 처리한 후 토큰을 파기합니다. 프런트엔드에서 반복적으로 제출하면 토큰이 파기되므로 절대 처리되지 않습니다.