Dev/Server

[Tomcat] URL 마지막에 jsessionid가 생성되는 원인 및 해결안

pu3vig 2022. 6. 28. 09:48
728x90
  • target:  Tomcat에서 jsessionid가 URL에 붙는 현상 비활성화

 


  • method: 

- Tomcat서버에서 <c:url> 태그 사용 시, 브라우저에서 사이트 최초 호출 시, URL에 jsessionid가 붙게 됨

<!-- index.jsp -->

<script type="text/javascript">
	document.location.href="<c:url value='/cmm/main/mainPage.do'/>";
</script>

- 실제 호출된 URL

http://localhost:8080/webapp/cmm/main/mainPage.do;jsessionid=1BASU4326JSNCBDY125HJAKDH2A

 

- 해당 현상으로 인한 문제점

 : 필요한 자원이 제대로 다운로드 되지 않는 현상으로 인하여 화면이 깨지는 현상이 발생할 수 있음

<!-- 예를 들어, header.jsp에 미리 선언한 css나 js에 대한 로딩이 불가 -->
<!-- 이미지가 정상적으로 로딩되지 않음 -->

<style link="<c:url value='/webapp' />/resources/css/common.css"/>
<script src="<c:url value='/webapp' />/resources/js/jquery-min.js"></script>

...
(중략)
...

<img src="<c:url value='/webapp' />"/resources/images/logo.png"/>


<!-- 위와 같이 선언한 경우, 실제 아래와 같이 호출 시도 -->
<style link="/webapp;jsessionid=234698BNASDJIWJ1JDGFKAJD/resources/css/common.css"/>
<script src="/webapp;jsessionid=234698BNASDJIWJ1JDGFKAJD/resources/js/jquery-min.js"></script>

...
(중략)
...

<img src="/webapp;jsessionid=234698BNASDJIWJ1JDGFKAJD/resources/images/logo.png"/>

 


  • solution:

1. Source 수준에서의 해결안

<!-- jstl 방식으로 변경 -->
<style link="${pageContext.request.contextPath}/resources/css/common.css"/>
<script src=${pageContext.request.contextPath}/resources/js/jquery-min.js"></script>
<img src="${pageContext.request.contextPath}/resources/images/logo.png"/>

 

2. Server 수준에서의 해결안

- Tomcat에서 애초에 URL rewriting 자체를 비활성화

<!-- server.xml(Tomcat 6.0.30 이상) -->
<Context docBase="" path="/webapp" disableURLRewriting="true" reloadable="true" />

<!-- web.xml(Tomcat 7이상 & Servlet 3.0 spec 이상) -->
<session-config>
	<session-timeout>3600</session-timeout>
    <tracking-mode>COOKIE</tracking-mode>
</session-config>

 


  • desc: 

- 해당 내용은 버그가 아닌 의도적으로 설계된 부분

- 새로운 session이 만들어지면 client에서는 쿠키를 지원하는지 여부를 서버가 알 수 없으므로, 쿠키와 URL에 모두 jsessionid가 생성

- client가 두 번째 요청부터 session cookie를 보내오면 URL에 jsessionid를 붙이지 않고, 쿠키가 없으면 계속 URL에 jsessionid를 붙이게 됨

 


  • source:

https://offbyone.tistory.com/339

 

Tomcat에서 jsessionid가 URL에 붙는것 비활성화 하기

Tomcat서버에서 스프링 프레임웍의 태그를 사용할 경우 최초 호출시 URL에 jsessionid 가 붙여지게 됩니다. 이것은 버그가 아니고 의도적으로 설계된 것입니다. 새 세션이 만들어지면 클라이언트가

offbyone.tistory.com

 

728x90