PRG 패턴 302 관련 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
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
안녕하세요. korean5078님, 공식 서포터즈 코즈위버입니다.
말씀하신것처럼 GET방식을 보장하려면 303을 써야 합니다. 그 외에도 302, 303은 검색엔진 최적화와도 관련되어 있기도 합니다.
보통 HTTP상태 코드는 서버(톰캣)에서 결정하는 것을 그대로 따르는데요, HTTP상태를 상황에 따라 정교하게 조절하지 않기는 합니다. 대략적으로 200은 성공, 400대는 요청오류, 500대는 서버 오류라는 식으로 큰 얼개를 알아두는 정도면 충분합니다.
감사합니다.
0
안녕하세요, 인프런 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를 그대로 사용하는 것을 막고, 리소스의 불필요한 중복 생성을 예방할 수 있습니다.
질문이 더 있으시면 언제든지 문의해 주세요.
캐시무효화시 그냥 no-store만 넣어되지 않나요?
0
71
2
API의 헤더와 바디에 대한 문의 입니다.
0
70
2
수정폼과 수정
0
66
1
쿠키에 대해 질문드려요!
0
88
2
서버에서 캐시 검증 헤더를 직접 처리해야 하나요?
0
86
1
http api get, post 멱등
0
40
1
컬렉션의 개념
0
49
1
시작라인에 들어가는 요청 대상 경로는 상대 경로 아닌가요?
0
54
1
PATCH 는 PUT처럼 멱등이여야 하지 않나요?
0
81
1
리소스 질문드립니다
0
56
1
IP 패킷 질문입니다.
0
59
1
html from, http api
0
75
2
브라우저 캐시가 60초 유효하다는게 무슨 뜻일까요
0
120
1
stateless 무상태 예제가 생각났는데. 저가 생각 한게 맞는지 궁금합니다.
0
99
1
URI 및 URL 질문, 왜 자바(스프링)에서는 이렇게 나누었는지?
0
141
1
host와 port
0
106
1
tcp/ip는 연결을 유지? 아니면 유지하지 않음?
0
145
1
다음 강의 커리큘럼 질문!!
0
130
2
캐시 개념에 대해서 설명하시지는 않으시는건가요?
0
113
1
클라이언트가 patch, delete 요청 시 알아야 하는 url
0
91
1
html form 형태 전송시 new, edit 등 컨트롤 리소스를 사용하는 이유
0
168
2
비 연결성(connectionless) 강의에서 질문입니다~
0
140
1
PATCH를 사용하지 못할 때 왜 POST?
0
162
2
협상과 우선순위3 질문드립니다.
1
130
1





