Secure을 적용하면 https인 경우에만 가능
XXS 공격을 방지하며 자바스크립트에서 접근 불가(document.cookie)하게 됨
HTTP 전송에만 사용가능
XSRF 공격 방지하며, 요청 도메인과 쿠키에 설정된 도메인이 같은 경우에만 쿠키 전송
크롬 브아우저는 해당 쿠키는 반드시 Secure가 설정된 쿠키여야함
만료일이 되면 쿠키를 삭제함
쿠키의 최대 시간을 나타냄
명시한 도메인을 나타냄
이 경로를 포함한 하위 경로 페이지만 쿠키가 접근됨
// 주어진 이름의 쿠키를 반환하는데,
// 조건에 맞는 쿠키가 없다면 undefined를 반환합니다.
function getCookie(name) {
let matches = document.cookie.match(new RegExp(
"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
));
return matches ? decodeURIComponent(matches[1]) : undefined;
}
function setCookie(name, value, options = {}) {
options = {
path: '/',
// 필요한 경우, 옵션 기본값을 설정할 수도 있습니다.
...options
};
if (options.expires instanceof Date) {
options.expires = options.expires.toUTCString();
}
let updatedCookie = encodeURIComponent(name) + "=" + encodeURIComponent(value);
for (let optionKey in options) {
updatedCookie += "; " + optionKey;
let optionValue = options[optionKey];
if (optionValue !== true) {
updatedCookie += "=" + optionValue;
}
}
document.cookie = updatedCookie;
}
// Example of use:
setCookie('user', 'John', {secure: true, 'max-age': 3600});
function deleteCookie(name) {
setCookie(name, "", {
'max-age': -1
})
}
주의 : 갱신이나 삭제는 동일한 도메인과 경로에서만 해야 합니다.
https://chobopark.tistory.com/232
https://ko.javascript.info/cookie
https://inpa.tistory.com/entry/HTTP-%F0%9F%8C%90-%EC%9B%B9-%EB%B8%8C%EB%9D%BC%EC%9A%B0%EC%A0%80%EC%9D%98-%EC%BF%A0%ED%82%A4-%EA%B0%9C%EB%85%90-Cookie-%ED%97%A4%EB%8D%94-%EB%8B%A4%EB%A3%A8%EA%B8%B0