게시글 열람 페이지에서 쿠키삭제가 막히는 이유가 뭘까요?
CMS/프레임워크 | Rhymix 2.0 |
---|---|
개발 언어 | PHP 7.2 |
라이믹스 코어의 다크모드 쿠키를 삭제하기 쉽게 버튼을 제공했는데요.
게시글 열람 페이지에서는 쿠키가 삭제가 안됩니다.
삭제하는 html과 스크립트는 레이아웃에 위치합니다.
<a class="del_night_mode">야간모드 자동 사용하기</a>
<script>
jQuery(function($) {
$(".del_night_mode").click(function(){
$.removeCookie("rx_color_scheme");
alert('이제 브라우저 야간모드에 따라 자동으로 사이트 야간모드가 작동합니다.');
location.reload();
})
});
</script>
위 코드가 있는 레이아웃 위치에 ({$_COOKIE['rx_color_scheme']}) 를 넣고 모니터링 해 봐도 게시글 열람페이지에서도 해당 쿠키 값이 잘 출력이 됩니다. 지워지지는게 안되고 있습니다.
페이지,게시판목록 등 전부 다 쿠키삭제가 됩니다.
그런데 유독 게시글 열람 페이지에서 실행하면 메시지도 뜨고 새로고침도 되지만 해당 쿠키가 지워지지 않습니다.
콘솔에 에러 같은 것은 따로 없습니다.
콘솔에 에러는 아닌데
rhymix.min.js?20210501095225:11 DEPRECATED : xGetElementById() is deprecated in Rhymix.
이런 메시지가 눈에 띄긴 하네요.
댓글 9
콘솔에 쳐보니 게시글 페이지에서는 path 까지 지정해줘야 동작하는 것 같습니다.
혹시 이유를 알 수 있을까요???? 게시글 열람페이지만 그렇다면 뭔가 이유가 있을 것 같고 이유를 알면 앞으로 뭔가 막히지 않고 해결 할 수 있을 것 같아서요.
- 알려주신대로 path까지 적어주니 잘 됩니다. 감사합니다.
검색해보니 '쿠키 삭제시 생성할때와 같은 path와 domain 을 사용해야 합니다.' 라고 하는데요..
아마도 이것과 관련이 있지 않을까 싶네요.
Delete cookie:
// Returns true when cookie was successfully deleted, otherwise false
$.removeCookie('name'); // => true
$.removeCookie('nothing'); // => false
// Need to use the same attributes (path, domain) as what the cookie was written with
$.cookie('name', 'value', { path: '/' });
// This won't work!
$.removeCookie('name'); // => false
// This will work!
$.removeCookie('name', { path: '/' }); // => true
Note: when deleting a cookie, you must pass the exact same path, domain and secure options that were used to set the cookie, unless you're relying on the default options that is.
====
(https://github.com/carhartl/jquery-cookie에서 발췌)
쿠키 삭제시 쿠키를 만들때 지정했던 path를 지정하지 않으면 기본값(아마 현재 주소 같습니다)를 사용한다고 합니다.
그나저나 jquery cookie 라이브러리가 지원 중단 상태네요. js-cookie로 대체되었다고 합니다.
쿠키를 생성할때 path를 넣지 않아도 삭제시에 넣어야 하는건가요??
라이믹스 코어에서 만들어주는 쿠키라 어떻게 생성되었는지도 확인해봐야겠네요..
http://www.editthiscookie.com/
editthiscookie 사용하시면 현재 쿠키 목록이나 path 등 바로 확인 가능합니다. 타운의 경우 세션키 등 여러 쿠키가 생성되는데 모두 / path입니다.
설명 감사합니다.
글읽기 화면은 "https://domain.com/mid/1234" 와 같은 형태의 주소를 가지므로, 그 자리에서 쿠키를 굽거나 지우려고 하면 path는 "/mid/"가 기본값이 됩니다. 메인화면이나 게시판 목록 화면에서는 "/"가 되고요.
짧은주소라는 개념이 등장하기 전, 실제로 폴더 아래에 파일들이 존재하고 그 파일 경로를 요청하던 시절에 만들어진 규칙이라 그렇습니다. 뭐 지금도 서브폴더마다 다른 솔루션을 설치하여 운영하는 것이 불가능하지는 않지요. 서브폴더에 RXE를 설치한 경우를 제외하면 path는 항상 "/"으로 넣어주는 것이 좋습니다.