해결된 질문
작성
·
2.1K
3
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.
1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)
질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)
[질문 내용]
여기에 질문 내용을 남겨주세요.
안녕하세요 김영한님의 강의 잘 듣고 있습니다.
강의를 듣가가 궁금한 점이 생겼는데요
일시적인 리다이렉션에서 307 Temporary Redirect는 Post로 요청하면 똑같이 요청 메서드도 유지가 되는데 만약 주문 데이터를 Post /order HTTP/1.1로 요청을 하면 응답으로 HTTP/1.1 307 Temporary Redirect 헤더 부분에 Location: /order-result/19 결과 위치를 알려주는 거라면 리다이렉트시 어떤 형태로 Post를 하게 되나요? Post면 위치로 이동 후 다시 결과를 등록하는 건가요..?이해가 잘 안됩니다.
307은 Post로 요청을 하면 다시 Post로 리다이렉트가 되니깐 PRG가 될 수 없는 건가요?
답변 1
1
안녕하세요. dkdpawjddnr님
307 Temporary Redirect 상태 코드는 클라이언트에게 요청한 리소스가 일시적으로 다른 URI로 이동했음을 알려주며, 클라이언트는 리다이렉트된 위치로 동일한 요청 메서드를 사용하여 요청을 다시 보내야 합니다. 이때 클라이언트가 메시지 바디도 똑같이 다시 보내야 합니다. 예를 들어, 클라이언트가 /order
엔드포인트로 POST 요청을 보내고, 서버가 HTTP/1.1 307 Temporary Redirect
응답과 함께 Location: /order-result/19
헤더를 반환한다면, 클라이언트는 자동으로 /order-result/19
로 POST 요청을 다시 보내야 합니다. 이때, 원래의 POST 요청 본문에 있던 데이터 (예: 주문 정보)가 그대로 /order-result/19
로 전송됩니다.
네 맞습니다. PRG를 사용한다면 다른 방법을 사용하시는 것이 좋습니다.
감사합니다.
이해가 잘 됐습니다. 자세하게 설명해 주셔서 감사합니다!