위챗 공식 계정 삭제 쿠키 실패, 쿠키 설정 만료 시간이 소용없음, 위챗 공식 계정 쿠키는 비교적 괴이하다, 삭제할 수 없다, 해결 방법, 원생 JS 봉인 쿠키 통일 조작 삭제 쿠키 읽기, 삭제
이 쿠키가 어떻게 생겼는지에 대해 말하자면 pc의 주소를 위챗으로 직접 방문한 다음에 로그인하고 닫는다. (종료가 아니라 바로 닫는다. 쿠키는 지우지 않았다) 이때 공중번호로 그 중의 공중번호에 전문적으로 준비한 페이지를 방문한다. pc의 주소와 같은 도메인 이름 아래에 있을 때 쿠키가 존재한다.
해결 방안은 공식 계정에서 작업을 할 때 먼저 쿠키를 삭제한 다음에 조작을 하는 것이다. 정상적으로 말하자면 백엔드에서 쿠키를 받지 못할 것이다. 왜냐하면 쿠키가 기한이 지났기 때문에 존재하지 않는다. 그러나 백엔드에서 쿠키를 받을 수 있다는 것은 좀 이상하다.
쿠키는 봉인된 것입니다. 먼저 테스트를 통과한 정확한 코드입니다. 관심 있는 사람은 문제가 있는 코드를 아래로 볼 수 있습니다.
const setCookie = (name, value, expire = 60*60*24, domain=null) => {
domain || (domain = window.location.host);
let date = new Date();
date.setSeconds(date.getSeconds() + expire);
document.cookie = name + " = " + escape(value) + "; expires=" + date.toGMTString()+"; dommain=" + domain + "; path=/";
};
// cookie
const getCookie = (name) => {
var arr;
const reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
arr = document.cookie.match(reg);
if (arr) {
return unescape(arr[2]);
} else {
return null;
}
};
// cookie
const readCookie = (name) => {
let arr = null
let reg = new RegExp('(^| )'+name+'=([^;]*)(;|$)')
if (document.cookie && (arr = document.cookie.match(reg))) {
return unescape(arr[2])
} else {
return null;
}
}
const delCookie = (name, domain=null) => {
domain || (domain = window.location.host);
let exp = new Date();
exp.setTime(exp.getTime() - 1);
let cval = getCookie(name);
if (cval != null) {
document.cookie = name + " = " + cval + "; expires=" + exp.toGMTString()+"; dommain=" + domain + "; path=/";
}
};
// cookie
const clearAllCookie = (domain=null)=>{
domain || (domain = window.location.host);
let date = new Date();
date.setTime(date.getTime() - 1);
let keys = document.cookie.match(/[^ =;]+(?=\=)/g);
if(keys){
for(let i=keys.length;i--;){
document.cookie = keys[i] + ` = 0; expires=${date.toGMTString()}; dommain=${domain}; path=/`;
}
}
}
export default {
setCookie,
getCookie,
readCookie,
delCookie,
clearAllCookie
};
다음은 쿠키를 이상하게 만드는 코드입니다. 보시다시피domain과 path가 휴대하지 않았습니다. 아마도 위챗 브라우저 쪽에서 비교적 엄격하게 요구했을 것입니다. 그러나 이 코드는 pc측에 두는 것은 문제없습니다.
const setCookie = (name, value, expire) => {
let date = new Date();
date.setSeconds(date.getSeconds() + expire);
document.cookie = name + " = " + escape(value) + "; expires=" + date.toGMTString();
};
const getCookie = (name) => {
var arr;
const reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
arr = document.cookie.match(reg);
if (arr) {
return unescape(arr[2]);
} else {
return null;
}
};
// cookies
const readCookie = (name) => {
let arr = null
let reg = new RegExp('(^| )'+name+'=([^;]*)(;|$)')
if (document.cookie && (arr = document.cookie.match(reg))) {
return unescape(arr[2])
} else {
return null;
}
}
const delCookie = (name) => {
let exp = new Date();
exp.setTime(exp.getTime() - 1);
let cval = getCookie(name);
if (cval != null) {
document.cookie = name + " = " + cval + "; expires=" + exp.toGMTString();
}
};
// cookie
const clearAllCookie = ()=>{
let date = new Date();
date.setTime(date.getTime() - 10000);
document.write(document.cookie);
let keys = document.cookie.match(/[^ =;]+(?=\=)/g);
if(keys){
for(let i=keys.length;i--;){
document.cookie = keys[i] + `=0; expires=${date.toGMTString()};PATH=/`;
}
}
}
export default {
setCookie,
getCookie,
readCookie,
delCookie,
clearAllCookie
};
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
위챗으로 openId 가져오기텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.