이름을 가진 특정 쿠키를 어떻게 삭제 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('.')}`;