jQuery를 사용하여 쿠키를 삭제하는 방법은 무엇입니까?


90

jQuery를 사용하여 쿠키를 삭제하고 싶습니다. 나는 이것을 시도했다 :

$.cookie('name', '', { expires: -1 });

그러나 페이지를 새로 고치면 쿠키가 여전히 있습니다.

alert('name:' +$.cookie('name'));

왜?


일부 브라우저는 브라우저를 다시 시작한 후에 만 ​​쿠키를 삭제합니다.
Eboubaker

답변:


146

JQuery로 쿠키를 삭제하려면 값을 null로 설정하십시오.

$.cookie("name", null, { path: '/' });

편집 : 최종 해결책은 pathOP가 다른 디렉토리의 여러 페이지에서 쿠키에 액세스하므로 기본 경로가 다르기 때문에 쿠키에 액세스 할 때마다 속성 을 명시 적으로 지정하는 것이 었습니다 (원래 질문에 설명되어 있지 않음). 해결책은 아래 토론에서 발견되었으며, 이는 정확하지 않음에도 불구하고이 답변이 수락 된 이유를 설명합니다.

일부 버전 jQ 쿠키의 경우 위의 솔루션은 쿠키를 문자열 null로 설정합니다. 따라서 쿠키를 제거하지 않습니다. 대신 아래 제안 된 코드를 사용하십시오.

$.removeCookie('the_cookie', { path: '/' });

그러나 여기 소스에서 : plugins.jquery.com/files/jquery.cookie.js.txt : if (value === null) { value = '';options.expires = -1;}, 처리 기능 내부에 들어가므로 동일한 작업을 수행해야합니다. (매개 변수는 (name, value, options))
aularon

9
쿠키 설정 코드와 테스트 코드가 같은 페이지에 있습니까? 그렇지 않은 경우 path현재 페이지의 경로를 기본값으로하므로 두 명령에 대한 옵션 을 명시 적으로 설정해야 합니다. : 도메인 모두 쿠키를 읽고 기록되는 모든 장소에서의 루트 설정하여 테스트$.cookie('name', value, {path:'/'})
채드윅

1
채드윅> 당신 말이 맞을지도 모릅니다. exm. site.com에서 쿠키를 설정 한 다음 site.com/user, site.com/user/mod, site.com/user/mod/new로 이동하면이 모든 페이지에서 쿠키가 표시되기를 바랍니다. {path : '/'}와 같이 경로는 어떻게 생겼습니까?
user319854

2
이 코드는 쿠키를 제거하지 않지만 해당 값에 null을 설정합니다.
Tomzan 2013 년

12
-1은 실제로 쿠키를 제거하지 않기 때문입니다. $.removeCookie('cookie_name')그렇습니다.
Rosdi Kasim 2013

71

이것을 시도 할 수 있습니다.

$.removeCookie('the_cookie', { path: '/' });

출처 : https://github.com/carhartl/jquery-cookie#readme


Yah .. 난 괜찮아요
Cataclysm

하위 도메인을 사용하는 경우이를 지정해야 할 수도 있습니다. 도메인 이름의 시작 부분에 기간이 요구 될 수있다 특히 때문에 (.www.example.com)
알렉시스 WILKE

어떤 이유로 든 코드가 다른 함수로 이동해야하는 경우에는 작동하지 않았습니다. $ .cookie ( 'name', null) 위와 같이 더 신뢰할 수있는 것 같습니다. 그러나 이렇게하면 쿠키가 제거되는 경우도 있습니다.
Ligemer 2014

이것은 실제로 진짜 답입니다!
Kalaschni

15

jquery.cookie 플러그인을 사용하지 않고 쿠키를 삭제할 수도 있습니다.

document.cookie = 'NAMEOFYOURCOOKIE' + '=; expires=Thu, 01-Jan-70 00:00:01 GMT;';

4

쿠키에 대한 오해의 문제입니다. 브라우저는 키뿐만 아니라 옵션 경로 및 도메인을 비교하는 쿠키 값을 인식합니다. 따라서 브라우저는 서버 설정 옵션 (path = '/'; domain = 'mydomain.com')으로 키가 'name'이고 키가 옵션없이 'name'인 쿠키 값을 다른 값으로 인식합니다.



1

설정된 경우 에만 나를 위해 일했습니다 path.

$.cookie('name', null, {path:'/'})

당신은 당신으로 내 대답을 복사 및 붙여 넣기 원인 Downvoting
오토 Kanellis

1
@OttoKanellis 그래서 나는 (내 대답 후에 편집 되었기 때문에) 받아 들여진 대답도 거절하고 ( 경로 매개 변수의 중요성을 강조하지 않았기 때문에) 당신의 대답도 거절 할 것을 제안합니다 !
Andron 2015

-3

당신이하고있는 일이 옳고, 문제는 다른 곳에 있습니다. 예를 들어, 쿠키가 새로 고쳐질 때 어떻게 든 다시 설정됩니다.


4
이 링크가 질문에 답할 수 있지만 여기에 답변의 필수 부분을 포함하고 참조 용 링크를 제공하는 것이 좋습니다. 링크 된 페이지가 변경되면 링크 전용 답변이 무효화 될 수 있습니다.
Uri Agassi

바로이 대답에 대해 제가 말하고있는 것은 OP가 올바른 방식으로하고 있다는 것입니다. OP 코드를 복사하여 붙여 넣는 것은 중복되며 다른 코드를 추가하는 것은 독자에게 혼란을 줄 것입니다. 위로 스크롤하여 OP가 무엇을하는지 볼 수 있습니다. 여기에서 "필수 부분"이 있습니다. 그러나 무언가를 포함하는 것이 더 나을 것이라고 생각되면 (분명히 어떤 사람들은 ... 그들 중 한 명이 내 대답에 반대 투표했습니다 :)) 대답을 편집하고 그에 따라 수정하십시오. 감사합니다
aularon 2014-06-07

링크의 문제점은 "썩는"경향이 있다는 것입니다. 변경, 이동, 사라집니다 (예 : 링크가 이미 죽었습니다!). 우리는 당신의 대답은 (또한 참조 자체가 포함됩니다, 그래서 당신이 그것을 함께 링크에서 관련 텍스트를 인용 선호하는 이유입니다 meta.stackexchange.com/questions/8231/...를 )
열린 아가시

나는 그것을 잘 알고 있지만, 다시 말하지만 여기에서는 그렇지 않습니다. 위의 전체 답변은 "당신이하는 일이 맞습니다. 문제는 다른 곳에 있습니다. 예를 들어 쿠키가 새로 고침시 어떻게 든 다시 설정되고 있습니다"로 다시 작성할 수 있습니다. 다시 말하지만, 링크 썩음은 문제입니다. 링크 옆에있는 답 자체가 갈 길입니다. 이 답변과는 무관합니다.
aularon 2014-06-08

따라서 반복해서 답변에 하나의 링크가 포함되어 있고 해당 링크가 죽었다고해서 답변이 충분하지 않다는 의미는 아닙니다. 일부 링크는 추가 세부 정보를 제공하기위한 것일뿐 답변의 완전성을 위해 필요하지 않습니다. 이 동작은 컨텍스트 링크를 이해하는 기본 NLP가없는 잘못 프로그래밍 된 봇처럼 보입니다. 아마이 작업을 중지해야합니다.
aularon 2014-06-08
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.