쿠키 작동 원리
1882 단어 servlet->기본
쿠키는 클라이언트에 저장되고 클라이언트에 저장된 위치를 누르면 메모리 쿠키와 하드디스크 쿠키로 나눌 수 있다.메모리 쿠키는 브라우저가 관리하고 메모리에 저장하면 브라우저가 닫힌 후 사라지고 존재 시간이 짧다.그러나 하드 디스크 쿠키는 사용자가 수동으로 정리하거나 만료 시간이 되지 않는 한 하드 디스크 쿠키는 삭제되지 않으며 존재 시간은 장기적이다.따라서 존재 시간에 따라 비지구 쿠키와 지구 쿠키로 나눌 수 있다.
둘째, 쿠키 상용 속성
Domain: 도메인, 현재 쿠키가 속한 도메인 또는 하위 도메인을 나타냅니다.이 쿠키가 속하는 도메인 이름에 접근할 때만 이 쿠키 정보를 서버에 가져옵니다.예를 들어 Domain을'pandan.xyz'2급 도메인 이름으로 설정하면 브라우저는 www.pandan을 방문한다.xyz와bbs.pandan.xyz 등 3급 도메인 이름은 이 쿠키 정보를 가지고 있습니다.
Path: 경로, 쿠키가 속한 경로를 나타냅니다.기본적으로 "/"이며 쿠키가 속하는 경로에 접근할 때 요청이 이 쿠키 정보를 가져옵니다.
Secure: 이 쿠키는 https로만 전송됩니다.일반적으로 인증 정보를 포함하는 쿠키에 사용되며 이 쿠키를 전송할 때https로 전송해야 합니다.만약 이 값이true로 설정되고 네트워크 프로토콜이 http 비안전 프로토콜이라면 이 쿠키 정보를 요청할 수 없습니다.
HttpOnly: 브라우저 js 스크립트에서 쿠키 정보를 읽을 수 없음을 나타냅니다.xss공격을 효과적으로 방지할 수 있습니다.
Expires/Max-Age: 쿠키 만료 기간을 나타냅니다.Expires는 만료 일자(절대 시간), Max-Age는 상대 시간(현재 시간보다 밀리초 수)이다.
셋째, 응용 예
/** cookie 1*/
Cookie c = new Cookie(name, value);
c.setPath("/");
c.setDomain(".pandan.xyz");
c.setMaxAge(maxAge);//0 cookie ,-1( 0) cookie, 0 cookie
response.addCookie(c);
/** cookie 2*/
StringBuilder sb = new StringBuilder();
sb.append(name).append("=").append(value).append(";");
sb.append("Domain=").append(".pandan.xyz").append(";");
if(maxAge >= 0){
sb.append("Max-Age=").append(maxAge).append(";");//maxAge: ( ),Max-Age IE , Expires
}
sb.append("Path=/;");
sb.append("HttpOnly;");
response.setHeader("Set-Cookie", sb.toString());
servlet 3.0 이하 버전은 httpOnly 속성을 설정하는 방법이 없고 방식 2를 통해 쿠키 httpOnly 속성을 설정할 수 있습니다. servlet 용기는 방식 1로 설정된 쿠키 정보를 최종적으로 방식 2로 브라우저에 출력합니다.