84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
拥有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. 서버 측 검증, 페이지가 새로 고쳐질 때마다 페이지에 토큰이 생성됩니다. 토큰이 유효한지 판단한 후 데이터를 처리한 후 토큰을 파기합니다. 프런트엔드에서 반복적으로 제출하면 토큰이 파기되므로 절대 처리되지 않습니다.