본문 바로가기
Programming/프로그래밍 이론

[프로그래밍 이론] HTTP forward와 redirect

by SpiralMoon 2023. 12. 7.
반응형

HTTP forward와 redirect

HTTP 통신에서 request를 다른 URL로 보내버리는 기법인 forward와 redirect를 알아보자.

포워딩 (Forwading)

HTTP forward

포워딩은 클라이언트의 request를 서버 내부에서 다른 리소스로 전달하는 기법이다.

모든 처리가 서버 내부에서 이루어지기 때문에 클라이언트는 이 과정을 알 수 없으며, 클라이언트는 처음 요청한 URL을 유지하게 된다.

단일 요청/응답 구조를 가진다.


리디렉션 (Redirection)

HTTP redirect

리디렉션은 클라이언트의 request를 새로운 URL로 이동하도록 서버가 클라이언트에게 재안내하는 기법이다.

서버는 클라이언트에게 HTTP 상태코드와 함께 새로운 URL을 제공하여 다시 request를 보낼 것을 명시적으로 알린다. 클라이언트는 새로운 URL로 다시 request를 보낸다.

여러 번의 요청/응답 구조를 가진다.


POST request는 리디렉션을 하면 안된다?

HTTP api 구현시 redirect을 사용하여 원본 method가 유실되는 현상

HTTP Method 중에서 POST/PUT/PATCH/DELETE는 body 데이터를 포함하여 request를 보낼 수 있는데 보안/안정성 정책 때문에 body 데이터가 다른 URL에 전달되지 않도록 리디렉션 URL로의 request는 GET request으로 바뀌게 된다. (일반적으로 브라우저가 처리)

 

즉, POST request를 리디렉션하면 새 URL로 GET request가 전송되기 때문에 의도했던대로 동작하지 않을 가능성이 있다.


POST request에 리디렉션을 사용하는 PRG(Post-Redirect-GET) 패턴

위에서 말했던 것과 반대로 일부러 POST request를 리디렉션하는 기법도 존재한다.

 

브라우저에서 POST request 페이지를 새로고침 할 경우 request가 중복 발생하는데 이를 막기 위해서 POST request의 요구사항을 모두 처리 후 response로 리디렉션을 유도하면 새로고침을 통한 POST request가 중복 발생하지 않게되므로 멱등성을 지킬 수 있게 된다.


참조

 

Redirections in HTTP - HTTP | MDN

URL redirection, also known as URL forwarding, is a technique to give more than one URL address to a page, a form, a whole website, or a web application. HTTP has a special kind of response, called a HTTP redirect, for this operation.

developer.mozilla.org

 

 

Post/Redirect/Get - Wikipedia

From Wikipedia, the free encyclopedia Web development design pattern to avoid duplicate form submissions Diagram of a double POST problem encountered in user agents. Diagram of the double POST problem above being solved by PRG. Post/Redirect/Get (PRG) is a

en.wikipedia.org

 
반응형

댓글