Java-Chip4 / StudyingRecord

강의 내용 정리📝
6 stars 2 forks source link

PRG패턴을 사용하더라도 POST요청에 응답이 늦어지면 POST 재요청을 막을 수 있을까? #56

Open nmsgust opened 2 years ago

nmsgust commented 2 years ago

PRG(Post-Redirect-Get)패턴이란?

양식 제출 후 표시되는 페이지를 다시 로드, 공유 또는 북마크할 수 있도록 해주는 웹 개발 시에 권장되는 디자인 패턴중 하나이다. HTTP POST 요청에 대한 응답이 또 다른 URL로의 GET 요청을 위한 리다이렉트(응답 코드가 3XX)여야 한다는 것을 의미한다. 즉, 일반적인 HTTP GET 요청처럼 HTTP POST 요청에 대한 응답이 어떠한 페이지를 직접 반환하는 것은 권장되지 않는 위험한 방식이라는 것이다.

PRG패턴을 사용하지 않을 경우

  1. 새로고침으로 인해 동일한 HTTP POST 요청이 중복으로 발생하여 의도치 않은 결과를 낳을 수 있다.
  2. HTTP POST 요청의 결과에 해당하는 페이지를 북마크 하거나 다른 사람과 공유하는 것이 어려워진다.

PRG패턴을 사용하더라도 POST요청에 응답이 늦어지면 POST 재요청을 막을 수 있을까?

PRG패턴을 사용하면 중복 호출을 확률적으로 상당히 많이 줄일 수 있지만, 서버 지연으로 인해 초기 제출이 완료되기 전에 웹 사용자가 새로고침 할 경우 POST의 중복을 궁극적으로 막을 수는 없다. 이 경우에는 서버에서 중복을 체크하도록 로직을 추가로 개발해야 한다.

참고 https://en.wikipedia.org/wiki/Post/Redirect/Get https://www.inflearn.com/questions/201728