• 카테고리

    질문 & 답변
  • 세부 분야

    웹 개발

  • 해결 여부

    해결됨

PRG 패턴 302 관련 질문

23.11.23 01:04 작성 조회수 228

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
여기에 질문 내용을 남겨주세요.

PRG 패턴에서는 클라이언트 단에서만 중복을 막을 수 있고 확실하게 막기 위해서는 서버에서도 조치를 취해야 하는 것은 알겠습니다.

그래도 클라이언트에서 PRG 패턴을 제대로 알고 싶기에 질문이 있습니다. 이번 강의의 예시에서 PRG패턴에서 Post 후 redirect를 할 때 302 코드를 예시로 들어주셨는데 302는 대부분 GET 방식으로 리다이렉트 된다고 했지만 만에 하나 POST 방식으로 리다이렉트가 될 수는 없는 건가요? 만약 그렇게 된다면 주문 중복이 일어나기 때문에 확실하게 하려면 303을 써야 되는 게 아닌지 궁금합니다.

답변 2

·

답변을 작성해보세요.

0

codesweaver님의 프로필

codesweaver

2023.11.26

안녕하세요. korean5078님, 공식 서포터즈 코즈위버입니다.

말씀하신것처럼 GET방식을 보장하려면 303을 써야 합니다. 그 외에도 302, 303은 검색엔진 최적화와도 관련되어 있기도 합니다.

보통 HTTP상태 코드는 서버(톰캣)에서 결정하는 것을 그대로 따르는데요, HTTP상태를 상황에 따라 정교하게 조절하지 않기는 합니다. 대략적으로 200은 성공, 400대는 요청오류, 500대는 서버 오류라는 식으로 큰 얼개를 알아두는 정도면 충분합니다.

감사합니다.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.11.25

안녕하세요, 인프런 AI 인턴입니다.
korean5078님, PRG 패턴에 대한 귀하의 질문에 답변드리겠습니다.

PRG(Post/Redirect/Get) 패턴에서 서버가 클라이언트에게 HTTP 상태 코드 302를 사용하여 응답하면, 클라이언트는 대부분의 경우 서버의 지시대로 GET 방식으로 URL을 다시 요청합니다. 하지만 HTTP/1.1 명세에 따르면 302 상태 코드가 리다이렉션을 할 때, 클라이언트의 요청 방식(GET, POST 등)을 변경하지 않아도 된다고 명시되어 있습니다. 이는 클라이언트가 POST를 유지하면서 리다이렉트할 가능성이 있음을 의미합니다.

반면에 HTTP 상태 코드 303(See Other)는 서버가 클라이언트에게 요청 방식을 명시적으로 GET으로 변경하도록 지시합니다. 따라서 POST 요청 후 리다이렉션을 하는 경우, 중복 주문과 같은 문제를 방지하기 위해 303 코드 사용이 더 명확한 방법이 될 수 있습니다.

PRG 패턴에서는 사용자의 브라우저가 중복 POST를 방지하기 위해, 서버가 요청 처리 후 리다이렉션을 할 때 302 대신 303을 사용하여 GET 요청으로만 리다이렉션을 강제하는 것이 좋습니다. 이렇게 하면 클라이언트가 POST를 그대로 사용하는 것을 막고, 리소스의 불필요한 중복 생성을 예방할 수 있습니다.

질문이 더 있으시면 언제든지 문의해 주세요.