[javascript] 이름으로 쿠키를 삭제 하시겠습니까?

이름을 가진 특정 쿠키를 어떻게 삭제 roundcube_sessauth합니까?

다음은 안됩니다 :

function del_cookie(name) {
    document.cookie = 'roundcube_sessauth' +
    '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
} 

그리고:

<a href="javascript:del_cookie(name);">KILL</a>

roundcube_sessauth쿠키를 죽여 ?



답변

올바른 쿠키를 삭제하려면 쿠키가 존재하는 경로를 정의해야합니다.

function set_cookie(name, value) {
  document.cookie = name +'='+ value +'; Path=/;';
}
function delete_cookie(name) {
  document.cookie = name +'=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
}

경로를 지정하지 않으면 브라우저는 현재있는 페이지를 기준으로 쿠키를 설정하므로 다른 페이지에서 쿠키를 삭제하면 다른 쿠키가 계속 존재합니다.

@Evan Morrison의 의견에 따라 편집하십시오.
경우에 따라 올바른 쿠키를 식별하려면 Domain매개 변수가 필요합니다.
일반적으로로 정의됩니다 Domain=.yourdomain.com.
재치 점을 이 쿠키는 하위 도메인에 존재 수 있다는 도메인 이름 수단의 앞에 ( www또한 하위 도메인으로 간주).

또한 @RobertT의 답변에서 언급했듯이 HttpOnly쿠키는 클라이언트 측에서 JavaScript로 삭제할 수 없습니다.


답변

쿠키를 삭제하려면 expires날짜를 과거의 것으로 설정하십시오 . 이를 수행하는 기능입니다.

var delete_cookie = function(name) {
    document.cookie = name + '=;expires=Thu, 01 Jan 1970 00:00:01 GMT;';
};

그런 다음 roundcube_sessauth그냥 쿠키를 삭제하십시오 .

delete_cookie('roundcube_sessauth');


답변

// exMins = 0을 전달하면 생성되는 즉시 삭제됩니다.

function setCookie(cname, cvalue, exMins) {
    var d = new Date();
    d.setTime(d.getTime() + (exMins*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}

setCookie('cookieNameToDelete','',0) // this will delete the cookie.


답변

이것이 5 월 12 일의 Roundcube 버전의 상황인지는 잘 모르겠지만 현재 답변은 roundcube_sessauth로 표시되어 있으므로 JavaScript에서 쿠키를 삭제할 수 없다는 것입니다 HttpOnly. 이것은 JS 클라이언트 측 코드에서 액세스 할 수 없으며 서버 측 스크립트 또는 직접 사용자 작업 (통합 디버거 또는 플러그인과 같은 일부 브라우저 메커니즘을 통해)으로 만 제거 할 수 있음을 의미합니다.


답변

이 솔루션을 시도해 볼 수 있습니다

var d = new Date();
d.setTime(d.getTime());
var expires = "expires="+d.toUTCString();
document.cookie = 'COOKIE_NAME' + "=" + "" + ";domain=domain.com;path=/;expires=" + expires;


답변

제 경우에는 다른 환경에 블로우 코드를 사용했습니다.

  document.cookie = name +`=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;Domain=.${document.domain.split('.').splice(1).join('.')}`;


답변