javascript_쿠키

song·2023년 9월 15일

JavaScript

목록 보기
19/21

쿠키

  • 하드에 파일로 저장되기 때문에 컴퓨터나 브라우저가 꺼졌다 다시 켜져도 값을 유지할 수 있다.
  • name : 쿠키 이름 설정
  • value : 쿠키 실제값
    • 값은 보통 true를 넣음. false는 안씀. 유효기간이 지나면 쿠키자체가 지워지니까.
  • expires : 쿠키 유효기간
  • domain : 저장된 쿠키를 서버에서 전송할 때의 도메인 지정 (많이 쓰진 않음)
  • path : 쿠키가 전송될 서버의 url
    path를 / 로 지정하면 해당 사이트의 모든 페이지에서 쿠키정보를 확인할 수 있다.
  • secure : 보안적인 채널로 전송
    대부분의 경우 쿠키에는 위험한 데이터를 저장하지 않는다. 그래서 많이 사용하지 않는다.
  • document.cookie = name = value; expires = "20:00"; path = "/"
  • 쿠키는 유효기간을 무한으로 줄 수 없다. 그래서 접속할 때 마다 갱신해주면 된다.
  • 제일 많이 사용하는 기능 : 레이어드팝업, 로그인 유지하기

쿠키 읽기

function getCookie(c_name){
    let tmp_cookie = document.cookie.split(";"); //[쿠키이름 = true, value = "값", expires = "20:00", path = "/"]
    for(let i=0; i<tmp_cookie.length; i++){
        let tmp = tmp_cookie[i].split("="); //[쿠키이름, true]
        if(tmp[i].trim() == c_name){
            // 해당 쿠키가 있음.
            return unescape(tmp[i]);
            // unescape()는 알파벳, 숫자, @ - _ + * / .을 제회한 문자를 모두 16진수로 바꾼다. 
            // ;와 충돌을 피하기 위해 사용.
        }
    }
    return null;
}
  • unescape()는 알파벳, 숫자, @ - _ + * / .을 제회한 문자를 모두 16진수로 바꾼다.
    ;와 충돌을 피하기 위해 사용.
  • .trim() : 양 끝에 공백이 있으면 없앰.
  • 생성한 쿠키를 ; 기준으로 자르고, = 기준으로 잘라서 해당 쿠키 이름인 게 있는지 체크
  • 생성하는 사람마다 name, expires, path의 순서가 달라질 수 있어서 무조건 0번방을 체크하지 않는다.

쿠키 생성

  • expires 에 밀리초로 계산된 시간을 넣어주면 됨
function setCookie(name, value, exp){
    let dt = new Date();
    dt.setTime(dt.getDate() + (1000*60*60*24*exp)); // 1000밀리초 * 60 -> 1분 * 60 -> 1시간 * 24 -> 1일 * exp
    //생성할땐 밀리초기준으로 날짜를 잡고 그걸 다시 날짜로 변경해줘야한다. 
    document.cookie = `${name}=${value};expires=${dt.toUTCString};path=/`;
    //toUTCString : 기준시 기준으로 날짜 변경
}
  • 생성할땐 밀리초기준으로 날짜를 잡고 그걸 다시 날짜로 변경해줘야한다.
  • toUTCString : 기준시 기준으로 날짜 변경
  • document.cookie = `${name}=${value};expires=${dt.toUTCString};path=/`;

쿠키 삭제

  • expires 에 0초 또는 -1초로 생성하면 됨.
  • 삭제 자체가 없음.
  • 생성할 때 삭제도 같이 만들면 된다. 위 function 같이 사용하고, exp를 0초로 해놓으면 유효기간이 0초가 돼서 쿠키가 알아서 삭제된다.
profile
계속 나아가기

0개의 댓글