스프링

[HTTP] 로그아웃은 "GET" or "POST" ??

쿠쿠s 2022. 7. 12. 01:07

프로젝트를 진행하다가 사용자의 로그아웃을 구현할 일이 있었습니다.

 

당연히 로그아웃은 Rest 관점에서 사용자의 상태를 변경시키니까 Post가 아닌가? 라고 생각을 할 수 있지만 Rest 관점 외에서 이유를 생각해보고 찾아보니 아래와 같은 브라우저의 기능이 있습니다.

 

사용자를 위해 GET 링크를 미리 가져오는 웹 가속기(Web Acceleration)와 같은 일부 프로세스가 있습니다.

- 웹 가속화 는 캐싱 및 압축과 같은 다양한 기술을 사용하여 웹 서버와 클라이언트 브라우저 간의 콘텐츠 전송 속도를 높이는 것을 말합니다.

 

이러한 프리페치의 목적은 사용자가 링크를 따라가면 즉시 콘텐츠를 제공하여 페이지 로딩 시간을 단축하는 것입니다. 따라서 프로세스는 GET 요청의 링크가 콘텐츠를 반환하기 위한 것이며 상태를 변경하기 위한 것이 아니라고 가정합니다. 

 

만약 로그아웃을 GET 요청으로 구현하고 링크로 표시 하도록 구현을 했다면 Web Accelerators 프로세스가 페이지에서 링크를 미리 가져오려고 시도하는 동안 해당 프로세스가 사용자를 로그아웃할 시킬 수 있습니다.

더 많은 내용을 알고 싶으시다면 아래의 출처 링크를 따라가서 보시면 더 도움이 되실 것 같습니다.

 

감사합니다.

 

 

[출처]

https://www.baeldung.com/logout-get-vs-post 

        https://www.nginx.com/resources/glossary/web-acceleration/