[DEV] 기록

Tomcat에서 jsessionid가 URL에 붙는 것을 방지하는 설정

꾸준함. 2020. 9. 8. 15:57

[개요]

웹 서비스를 개발하는 도중 redirect를 할 때 [리다이렉트한 URL;jsessionid=XXX]와 같이 url 뒤에 jsessionid가 붙는 경우가 있어 이를 방지하는 방법을 공유합니니다.

 

[문제의 원인]

브라우저에서 쿠키를 사용할 수 없거나 쿠키가 없는 경우 URL이 인코딩될 때, jsessionid가 URL에 추가됩니다.

또한, 쿠키가 활성화된 경우에도 URL이 인코딩되는 경우 Java 애플리케이션은 첫 번째 요청에 대한 모든 URL에 jsessionid를 추가됩니다. 이는 첫 번째 요청을 보낼 때 서버가 브라우저에서 쿠키가 사용 가능한지 여부를 모르기 때문에 발생합니다.

 

[문제 해결 방법]

해당 문제는 리다이렉트를 하는 과정에서 URL을 다시 작성 즉, URL rewriting을 하면서 발생하는 문제인데 이는 web.xml이나 application.yml에 session-config를 설정하면서 방지할 수 있습니다.

 

web.xml

<session-config>
	<tracking-mode>COOKIE</tracking-mode>
</session-config>

 

application.yml

server:
  servlet:
    session:
      timeout: 30m
      tracking-modes: cookie

 

* 해당 설정은 Servlet 3.0 버전 이상부터 적용 가능합니다.

 

[출처]
https://stackoverflow.com/questions/11349064/how-to-avoid-jsessionid-xxx-on-the-first-call-to-a-page-it-works-if-first-page

https://sites.google.com/site/javatechnologyworld/remove-jsessionid-from-url-java

 

Remove jsessionID from URL (java) - Java Technology World

Ø  How is session maintained in java applications?Session can be maintained using one of the following mechanisms:1.       Cookies – Server generates name value pair which is stored by the web browser on user’s computer.  Browser sends the info

sites.google.com

 

반응형