웹 서비스를 개발하는 도중 종종 redirect를 할 때 URL뒤에 jsessionid=XXXXXXXXX가 붙는 경우가 있다.

이렇게 붙을 경우 페이지가 제대로 작동하지 않게 된다.

 

 

이렇게 붙는 이유는 브라우저에서 쿠키를 사용할 수 없거나 쿠키가 없는 경우 URL이 인코딩 될 때,

jsessionid가 URL 뒤에 추가된다.

또한, 쿠키가 활성화 된 경우에도 URL이 인코딩 되는 경우 Java 애플리케이션은 첫 번째 요청에 대한

모든 URL에 jsessionid를 추가한다.

추가이유는 첫 번째 요청을 보낼 때 서버가 브라우저에서 쿠키가 사용 가능한지 여부를 모르기 때문이다.

 

 

이를 해결하기 위해서는 Tomcat 서버의 설정을 변경해서 아에 위 기능을 비활성화 하는 방법이 있다.

 

첫번째 방법은 Tomcat 6.0.30 이상에서 사용할 수 있는 방법으론 server.xml 파일의 <Context> 설정에

disableURLRewriting 속성에 true를 사용하는 방법이다.

<Context docBase="simple_home" path="/sht_webapp" disableURLRewriting="true" reloadable="true" />

 

두번째 방법은 Tomcat 7과 Tomcat 8에서 Servlet 3.0 이상의 스펙을 사용하고 있다면 각 웹애플리케이션의 

web.xml 파일의 <session-config>태그에서  <tracking-mode>COOKIE</tracking-mode>로 비활성화 할 수 있다.

<session-config>

    <session-timeout>600</session-timeout>

    <tracking-mode>COOKIE</tracking-mode>

</session-config>