코딩항해기

[JSP] 이전 페이지 요청 재수행 (GET) 본문

JSP

[JSP] 이전 페이지 요청 재수행 (GET)

miniBcake 2024. 11. 7. 11:08

 

 

이전 페이지로 이동하는 방법은 history를 사용하는 방법으로 간단하게 구현할 수 있지만 정말 순수하게 이전 페이지를 보여주는 것이기 때문에 데이터에 변동이 있을 경우 해당 내용이 반영되지 않는다. 이 때 Referer를 통해 

 

Referer

htttp 헤더 중에 하나로 Referer 헤더는 사람들이 어디로부터 와서 방문 중인지를 인식할 수 있도록 해주며 해당 데이터는 예를 들어, 분석, 로깅, 혹은 캐싱 최적화에 사용될 수 있다. referer를 참조해 현재 표시하는 웹페이지가 어떤 웹페이지에서 요청되었는지 알 수 있다.

 

 

Referer - HTTP | MDN

Referer 요청 헤더는 현재 요청을 보낸 페이지의 절대 혹은 부분 주소를 포함합니다. 만약 링크를 타고 들어왔다면 해당 링크를 포함하고 있는 페이지의 주소가, 다른 도메인에 리소스 요청을 보

developer.mozilla.org

 

예를들어, http://www.test.com/1.html이라는 웹페이지에 있는 링크를 클릭하여 http://www.test.com/2.html으로 이동했을 때 referer는 http://www.test.com/1.html이 된다.

 

 

Referer를 활용한 재요청

이 주소를 활용하면 바로 이전 페이지로 이동하면서 재 요청을 서버로 보내기 때문에 데이터를 갱신할 수 있다.

다만 url에 포함되지 않는 방식이라면 사용할 수 없다. (GET 방식만 가능)

 

<button id="back-button" class="btn button-yello"
    onclick="location.href='<%= request.getHeader("Referer") %>'">
    게시판 돌아가기</button>

 

현재 프로젝트에서는 검색을 GET 방식으로 하고 있기 때문에 history.back 대신 사용하면 검색과 페이지를 유지하면서도 데이터를 다시 서버에서 받아오기 때문에 좋아요 같이 변화된 데이터를 반영할 수 있다.

 

주의할 점은 password의 경우 referer로 불러 올 수 없다고 한다.

 

referer? referrer?
referer은 referrer의 오타로 자바스크립트에서는 referrer를 사용하는데, 서블릿(JSP)에서는 오타 문제로 인해 referer로 명시해야한다. 
(자바스크립트 : document.referrer;)