차이
문서의 선택한 두 판 사이의 차이를 보여줍니다.
양쪽 이전 판 이전 판 다음 판 | 이전 판 | ||
http_cookie와_톰캣_버전별_이슈 [2019/06/12 06:18] – [쿠키의 목적] koov | http_cookie와_톰캣_버전별_이슈 [2020/11/27 11:36] (현재) – koov | ||
---|---|---|---|
줄 10: | 줄 10: | ||
==== 쿠키의 목적 ==== | ==== 쿠키의 목적 ==== | ||
=== 세션 관리 (로그인) === | === 세션 관리 (로그인) === | ||
- | * 쿠키는 웹사이트의 장바구니 기능 때문에 도입되었습니다.[[https:// | + | * 쿠키는 웹사이트의 장바구니 기능 때문에 도입되었습니다. [[https:// |
- | * 쿠키에 UID(고유식별자)를 넣어 사용자가 새 페이지를 방문해도 장바구니를 보여줄 수 있습니다.\ | + | * 쿠키에 UID(고유식별자)를 넣어 사용자가 새 페이지를 방문해도 장바구니를 보여줄 수 있습니다. |
- | * 이를 이용해 로그인 페이지를 방문하면 사용자에게 UID가 포함된 쿠키를 생성하고 사용자에게 서비스를 제공합니다{{ : | + | * 이를 이용해 로그인 페이지를 방문하면 사용자에게 UID가 포함된 쿠키를 생성하고 사용자에게 서비스를 제공합니다 |
+ | |||
+ | {{: | ||
+ | |||
+ | ↓ 로그인 후 | ||
+ | |||
+ | {{: | ||
=== 개인화 (검색 결과 설정, 테마 등) === | === 개인화 (검색 결과 설정, 테마 등) === | ||
* 사용자에게 컨텐츠를 보여주기 위한 정보를 기억하기 위해 사용될 수 있습니다. | * 사용자에게 컨텐츠를 보여주기 위한 정보를 기억하기 위해 사용될 수 있습니다. | ||
- | * 예를 들면 '' | + | * 예를 들면 '' |
+ | |||
+ | {{: | ||
=== 트래킹 (사용자 행동) === | === 트래킹 (사용자 행동) === | ||
줄 142: | 줄 150: | ||
* Netscape는 고정된 길이를 가진 날짯값으로 유효 기간을 나타내는 '' | * Netscape는 고정된 길이를 가진 날짯값으로 유효 기간을 나타내는 '' | ||
* Netscape의 날짜 값에는 공백이 들어갑니다. | * Netscape의 날짜 값에는 공백이 들어갑니다. | ||
- | * Netscape 쿠키는 '';'' | + | * Netscape 쿠키는 '';'' |
* Netscape 쿠키는 '' | * Netscape 쿠키는 '' | ||
* Netscape 쿠키는 '' | * Netscape 쿠키는 '' | ||
줄 151: | 줄 159: | ||
* 둘 다 '' | * 둘 다 '' | ||
* '' | * '' | ||
- | * RFC 6265의 쿠키 속성은 쿠키 Name, Value, Expires, Domain, Max-Age, Path, Secure, HttpOnly가 있습니다. | + | * '' |
- | * Comment는 서버가 쿠키의 용도를 기록해두기 위한 속성, Version은 쿠키가 어떤 명세서를 따르는지 버전을 나타냅니다. | + | * '' |
- | * Expires는 Date 값을 가지고 있으며 이 날짜가 지나면 쿠키를 버리고, HttpOnly는 비HTTP 요청을 막습니다. (클라이언트가 API로 접근하는 행위 등) | + | * '' |
* 구현 시 고려 사항에 관한 점 또한 변경되었습니다. | * 구현 시 고려 사항에 관한 점 또한 변경되었습니다. | ||
- | * RFC 2109는 유저 에이전트가 최소 300개의 쿠키, 쿠키마다 적어도 4096바이트, | + | * '' |
- | * RFC 6265는 유저 에이전트가 최소 3000개의 쿠키, 쿠키마다 적어도 4096바이트, | + | {{: |
- | * 또한 RFC 6265는 속성이름과 세미콜론 사이에 공백이 필요하고 특수 문자가 있는 경우를 제외하면 속성 값을 "" | + | * '' |
- | * RFC 6265는 유저 에이전트가 Set-Cookie 헤더를 어떻게 처리해야 하는지 알고리즘을 제공합니다. | + | {{: |
+ | * 또한 | ||
+ | * '' | ||
* javax.servlet.http.Cookie | * javax.servlet.http.Cookie | ||
* 최신버전은 기본적으로 6265를 사용합니다. | * 최신버전은 기본적으로 6265를 사용합니다. | ||
줄 190: | 줄 200: | ||
* default 버전의 쿠키를 가져오면 0 (netscape)가 가져와 집니다. | * default 버전의 쿠키를 가져오면 0 (netscape)가 가져와 집니다. | ||
- | * RFC 문서에는 6265에는 Expires가 생겼다고 적혀있으나 maxAge만 있습니다. | + | * RFC 문서에는 6265에는 |
<WRAP prewrap> | <WRAP prewrap> | ||
줄 212: | 줄 222: | ||
* maxAge를 정하면 자동으로 Expires가 정해집니다. | * maxAge를 정하면 자동으로 Expires가 정해집니다. | ||
- | * {{: | + | {{: |
===== 톰캣 6.0~8.5 버전별 쿠키 이슈. ===== | ===== 톰캣 6.0~8.5 버전별 쿠키 이슈. ===== | ||
줄 245: | 줄 255: | ||
* https:// | * https:// | ||
* 재현 방법 | * 재현 방법 | ||
- | * 스크린샷같이 쿠키를 생성합니다.{{ : | + | * 스크린샷같이 쿠키를 생성합니다. |
- | * 페이지를 재방문하면 헤더 값이 손상됩니다.{{ : | + | {{: |
+ | * 페이지를 재방문하면 헤더 값이 손상됩니다. | ||
+ | {{: | ||
* 해결 방법 | * 해결 방법 | ||
* 6.0.45로 업데이트합니다. | * 6.0.45로 업데이트합니다. | ||
줄 379: | 줄 391: | ||
makeCookie(response, | makeCookie(response, | ||
</ | </ | ||
- | </ | + | </ |
- | * Tomcat 7 이상{{ : | + | |
+ | ↓ 결과 | ||
+ | |||
+ | {{: | ||
+ | |||
+ | | ||
+ | {{: | ||
* 해결 방법 | * 해결 방법 | ||
- | | + | |
+ | {{: | ||
===== 출처 ===== | ===== 출처 ===== |