developer tip

자바 스크립트를 사용한 세션 전용 쿠키

copycodes 2020. 11. 13. 23:40
반응형

자바 스크립트를 사용한 세션 전용 쿠키


Javascript로 세션 전용 쿠키를 만들 수 있는지 궁금합니다. 브라우저가 닫히면 쿠키를 제거해야합니다.

웹 사이트가 HTML 전용이므로 서버에서 아무것도 사용할 수 없으므로 서버 측 스크립트가 사용되지 않습니다.

나는 이것에 대해 http://blog.lysender.com/2011/08/setting-session-only-cookie-via-javascript/를 읽었 지만 이것에 대한 더 많은 정보를 찾을 수 없습니다 ... 그래서 나는 이 방법이 신뢰할 수 있는지 궁금합니다.


네, 맞습니다.

expires파트를 넣지 않으면 JavaScript로 생성 되든 서버에 생성 되든 관계없이 세션 쿠키가 생성됩니다.

참조 https://stackoverflow.com/a/532660/1901857를


더 간단한 해결책은를 사용하는 것 sessionStorage입니다.이 경우 :

var myVariable = "Hello World";

sessionStorage['myvariable'] = myVariable;

var readValue = sessionStorage['myvariable'];
console.log(readValue);

그러나 sessionStorage모든 것을 문자열로 저장하므로 배열 / 객체로 작업 할 때 JSON을 사용하여 저장할 수 있습니다.

var myVariable = {a:[1,2,3,4], b:"some text"};

sessionStorage['myvariable'] = JSON.stringify(myVariable);
var readValue = JSON.parse(sessionStorage['myvariable']);

페이지 세션은 브라우저가 열려 있고 페이지를 다시로드하고 복원해도 지속되는 동안 지속됩니다. 새 탭이나 창에서 페이지를 열면 새 세션이 시작됩니다.

따라서 페이지 / 탭을 닫으면 데이터가 손실됩니다.


Java 스크립트로 세션 전용 쿠키를 생성하려면 다음을 사용할 수 있습니다. 이것은 나를 위해 작동합니다.

document.cookie = "cookiename=value; expires=0; path=/";

다음과 같이 쿠키 값을 얻습니다.

 //get cookie 
var cookiename = getCookie("cookiename");
if (cookiename == "value") {
    //write your script
}

//function getCookie        
function getCookie(cname) {
    var name = cname + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) == ' ') c = c.substring(1);
        if (c.indexOf(name) != -1) return c.substring(name.length, c.length);
    }
    return "";
}

IE를 지원하려면 완전히 "만료"상태로두고 이것을 사용할 수 있습니다.

document.cookie = "mtracker=somevalue; path=/";

참고 URL : https://stackoverflow.com/questions/14196671/session-only-cookies-with-javascript

반응형