관리 메뉴

번데기 개발자의 메모장

웹에서 forward와 redirect의 차이 본문

웹 프론트엔드/웹개발 용어 및 개념 정리

웹에서 forward와 redirect의 차이

번데기 개발자 2018. 8. 2. 17:07
반응형


페이지 전환 방식


웹에서는 페이지 전환 방식이 2가지가 있습니다.

forward 방식과 redirect 방식이 있습니다.


forward 방식


Web Container 차원에서의 페이지 이동만 있습니다.

실제로 웹 브라우저는 다른 페이지로 이동했음을 알 수 없습니다.

그렇기 때문에 웹 브라우저에는 최초에 호출한 URL이 표시되고 이동한 페이지의 URL 정보는 볼 수 없습니다.

동일한 web container 차원에서의 페이지 이동만 가능합니다.

현재 실행중인 페이지와 forward에 의해 호출될 페이지는 request, response 객체를 공유합니다.




Redirect 방식


web container 는 redirect 명령이 들어오면 웹 브라우저에게 다른 페이지로 이동하라는 명령을 내립니다.

웹 브라우저는 URL을 지시된 주소로 바꾸고 그 주소로 이동합니다.

다른 web container에 있는 주소로 이동이 가능합니다.

새로운 페이지에서는 request, response 객체가 새롭게 생성됩니다.





요약


첫째로는 URL의 변화여부와 둘째로는 객체의 재사용 여부가 다릅니다.

redirect => 변화 O 재사용 X

forward => 변화 X 재사용 O



사용에 따른 구별


위와 같은 차이점을 잘 구별하여 forward와 redirect를 사용하여야 합니다.

예를 들어 게시판 애플리케이션을 작성한다고 할때,

사용자가 보낸 요청정보를 이용하여 글쓰기 기능을 수행하는 CGI (Common Gateway Interface) 가 있다면 어떤 방식을 이용해야 할까요?

정답은 redirect 입니다.


그 이유는 사용자가 고의로 글쓰기 CGI 응답 페이지에서 새로고침을 누를때를 예로 들 수 있습니다.

forward의 경우 요청정보가 그대로 살아 있기 때문에 똑같은 글이 여러번 등록 될 수 있습니다.

하지만 redirect는 처음 글을 작성할때 보냈던 요청정보는 존재하지 않습니다.

그리고 글쓰기 기능을 하는 URL1이 아닌 URL2로 요청을 보내기 때문에 글쓰기가 여러번 수행되지 않습니다.


즉, 시스템(session, DB)에 변화가 생기는 요청(로그인, 회원가입, 글쓰기)의 경우 redirect방식으로 응답하는 것이 바람직하고, 

시스템에 변화가 생기지 않는 단순조회(리스트보기, 검색)의 경우 forward 방식으로 응답하는 것이 바람직합니다.














반응형

'웹 프론트엔드 > 웹개발 용어 및 개념 정리' 카테고리의 다른 글

HTTP 와 TCP의 Keep-Alive  (0) 2018.09.06
Key-Frame 애니메이션이란?  (0) 2018.08.09
SVG란?  (0) 2018.08.09
쿠키란? Cookie 개념  (0) 2018.08.06
CSS - 뷰포트란 무엇일까?  (0) 2018.08.03
0 Comments
댓글쓰기 폼