본문 바로가기
Lecture/Javascript-기초

cookie 삭제가 안될때... 서브도메인 포함

by 알 수 없는 사용자 2013. 4. 4.
반응형

쿠키를 삭제할때 보통 document.cookie 에 해당 쿠키이름과 값, 그리고 파괴되는 시간을 과거로 돌리면 알아서 삭제가됩니다.

위 사항은 아주 보통의 경우 삭제를 시키는것인데 일반적으로는 이렇게 해도 삭제가 됩니다.


하지만 어떤 이유에서 쿠키의 경로와 도메인을 지정하게 되는데 이때 지정된 도메인과 경로에 따라서 삭제를 못시키는 경우가 발생합니다.


가령 쿠키를 구을때 서브도메인을 포함하여 굽고자 하여 도메인이름앞에 .을 붙여서 구었다면 해당 서브도메인에서도 이 쿠키를 사용할 수 있습니다.

ex) document.cookie = 'mycookie=1; expire=날짜; domain=.cusmaker.com';


이렇게 구은다면 이 쿠키는 cusmaker.com 외에도 lejewk.cusmaker.com 에서 사용이 가능해집니다.

허나 이 쿠키를 삭제하려고 document.cookie = 'mycookie=; expire=과거날짜'; 와 같이 쓰면 절대 쿠키를 제거할수 없습니다.

왜냐!

도메인이 틀리기때문입니다. 기본적으로 서브도메인을 포함한 쿠키를 제거할때는 해당 도메인명을 꼭 명시해줘야하며, 도메인 이외에도 쿠키를 구을때 path를 주었다면 path 경로까지 포함하여야만 쿠키가 정상적으로 삭제가 됩니다.


document.cookie = 'mycookie=; expire=날짜; domain=cusmaker.com; path=[지정한경로]';

위와 같이 쓰는것이 올바른 쿠키 삭제법입니다.


검색하면 조금 나돌아다니는 쿠키삭제 코드가 잘 동작하지 않는경우가 있는데 극히 정상적인 코드이며 예외적인 요소를 고려하지 않았기때문에 삭제가 안되는 이유일수도 있습니다.


요약

- 서브도메인을 위해 쿠키를 구을떄 도메인명앞에 .을 붙이면, 이쿠키를 제거할때는 도메인명을 명시해서 제거해줍니다.

- path 경로를 지정하지않을경우 기본 / 로 구어지며, 이때 path 경로를 지정하여 쿠키를 제거하는것이 올바른 방법입니다.