2017-05-17 11 views
1

알다시피 POST 메서드는 멱등수가 아닙니다. 사용자가 짧은 시간에 여러 요청을 보내면 작업이 반복됩니다. 예를 들어
: 제출을 만들 수여러 서버에서 POST 요청을 일시적으로 멱등 원하게 유지하려면 어떻게해야합니까?

  • POST 요청은 사용자에 의해 호출됩니다.
  • 비슷한 제출이 서버에 허용되므로 사용자가 동일한 요청을 두 번 보내면 고유 제약 조건 위반으로 인해 두 번째 요청이 실패하지 않습니다.
  • 사용자가 실수로 두 개의 요청을 보내서 두 개의 동일한 리소스를 만듭니다 (자동 생성 된 리소스 ID 제외).

내 서버의 크기를 조절할 수 있도록하려면 어떻게해야합니까? 한 인스턴스 만있는 경우 사용자가 동일한 서버에서 유사한 요청을 일시적으로 완료하지 못하게하는 임시 시간 초과 목록을 서버에 추가 할 수 있습니다. 그러나 요청이 다른 서버 인스턴스로 전달 된 경우이 서버는 시간 초과 목록에 사용자를 가지지 않고 두 번째 요청을 올바르게 처리합니다.
일시적 제출 단추가 비활성화되어있어 사용자가 한 번에 하나의 요청 만 보낼 수 있도록 클라이언트 측에서 구현할 수 있다는 것을 알고 있습니다. 그러나 서버 측에서이를 처리 할 수있는 방법이 있습니까?

답변

0

경고 : 저는 웹 개발에 많은 제작 경험이 없습니다.

우연히 "제출"키가 두 번 눌려지는 것을 막는 것이 목표라면, POST 웹 페이지에 생성 된 GUID를 어떻게 든 추가 할 것입니다 (양식 필드?). 게시 된 내용과 GUID는 고유 한 키를 형성합니다. 동일한 내용이 동일한 생성 된 페이지에서 두 번 제출되지 않도록합니다.

+0

버튼을 처음 클릭하면 일시적으로 버튼을 사용 중지하면 쉽게 해결할 수 있습니다. 서버 측 보호를 원하는 이유 중 하나는 악의적 인 에이전트의 스팸을 방지하고 사용자를 일시적으로 차단하는 서버 측 기능을 최적의 솔루션처럼 보이게하는 것입니다. – Potatosaurus