Nice programing

JavaScript로 모든 쿠키를 삭제하려면 어떻게해야합니까?

nicepro 2020. 10. 28. 21:03
반응형

JavaScript로 모든 쿠키를 삭제하려면 어떻게해야합니까?


이 질문에 이미 답변이 있습니다.

JavaScript로 쿠키를 저장하는 코드를 작성했습니다. 이제 할당 한 값에 관계없이 쿠키를 지워야합니다.

Javascript에 의해 생성 된 모든 쿠키를 삭제하는 스크립트 모듈이 있습니까?

내 샘플 코드 :

document.cookie = 'ppkcookie2=another test; expires=Fri, 3 Aug 2001 20:47:11 UTC; path=/'

function createCookie(name,value,days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
        var expires = "; expires="+date.toGMTString();
    }
    else var expires = "";
    document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
    var nameEQ = name + "=";
    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,c.length);
        if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
    }
    return null;
}

function eraseCookie(name) {
    createCookie(name,"",-1);
}

다른 방법으로 모든 쿠키를 지울 수 있습니까?

웹 서버에서 코드를 테스트 할 때 문제가 있습니까?


겉보기에는 괜찮아 보입니다. eraseCookie()에서 읽은 각 쿠키를 호출하면 document.cookie모든 쿠키가 사라집니다.

이 시도:

var cookies = document.cookie.split(";");
for (var i = 0; i < cookies.length; i++)
  eraseCookie(cookies[i].split("=")[0]);

이 모든 것에는 다음과 같은주의 사항이 있습니다.

  • JavaScript HttpOnly 플래그가 설정된 쿠키를 제거 할 수 없습니다 .

브라우저 쿠키를 삭제하는 100 % 해결책은 없습니다.

문제는 쿠키가 키 "이름"뿐만 아니라 "도메인"및 "경로"로 고유하게 식별된다는 것입니다.

쿠키의 "도메인"및 "경로"를 모르면 쿠키를 안정적으로 삭제할 수 없습니다. 이 정보는 JavaScript의 document.cookie. HTTP 쿠키 헤더를 통해서도 사용할 수 없습니다!

그러나 쿠키의 이름, 경로 및 도메인을 알고있는 경우 과거 만료 날짜가있는 빈 쿠키를 설정하여 삭제할 수 있습니다. 예를 들면 다음과 같습니다.

function clearCookie(name, domain, path){
    var domain = domain || document.domain;
    var path = path || "/";
    document.cookie = name + "=; expires=" + +new Date + "; domain=" + domain + "; path=" + path;
};

짧막 한 농담

빨리 붙이고 싶은 경우 ...

document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); });

그리고 북마크릿에 대한 코드 :

javascript:(function(){document.cookie.split(";").forEach(function(c) { document.cookie = c.replace(/^ +/, "").replace(/=.*/, "=;expires=" + new Date().toUTCString() + ";path=/"); }); })();

이것은 우리가 응용 프로그램에서 사용하는 기능이며 잘 작동합니다.

쿠키 삭제 : 인수 방법 없음

function clearListCookies()
{   
    var cookies = document.cookie.split(";");
    for (var i = 0; i < cookies.length; i++)
    {   
        var spcook =  cookies[i].split("=");
        deleteCookie(spcook[0]);
    }
    function deleteCookie(cookiename)
    {
        var d = new Date();
        d.setDate(d.getDate() - 1);
        var expires = ";expires="+d;
        var name=cookiename;
        //alert(name);
        var value="";
        document.cookie = name + "=" + value + expires + "; path=/acc/html";                    
    }
    window.location = ""; // TO REFRESH THE PAGE
}

Edit: This will delete the cookie by setting it to yesterday's date.


Why do you use new Date instead of a static UTC string?

    function clearListCookies(){
    var cookies = document.cookie.split(";");
        for (var i = 0; i < cookies.length; i++){   
            var spcook =  cookies[i].split("=");
            document.cookie = spcook[0] + "=;expires=Thu, 21 Sep 1979 00:00:01 UTC;";                                
        }
    }

참고URL : https://stackoverflow.com/questions/595228/how-can-i-delete-all-cookies-with-javascript

반응형