programing

쿠키를이름으로삭제하시겠습니까?

oldcodes 2023. 9. 11. 22:12
반응형

쿠키를이름으로삭제하시겠습니까?

이름이 있는 특정 쿠키를 삭제하려면 어떻게 해야 합니까?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.example. 도메인 이름 앞에 을 두는 것은 이 쿠키가 모든 하위 도메인에 존재할 수 있음을 의미합니다.www또한 하위 도메인으로 계산됩니다.

또한 @RobertT의 답변에서도 언급된 바와 같이,HttpOnly클라이언트 측의 자바스크립트에서는 쿠키를 삭제할 수 없습니다.

쿠키 세트를 삭제하기 위해서는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_sessauthcookie from JavaScript, 로 표시됨HttpOnly. 이것은 JS 클라이언트 측 코드에서 액세스할 수 없으며 서버 측 스크립트나 직접적인 사용자 작업(통합 디버거 또는 일부 플러그인과 같은 브라우저 메커니즘을 통해)으로만 제거할 수 있음을 의미합니다.

이 솔루션을 사용해 볼 수 있습니다.

var d = new Date();
d.setTime(d.getTime());
var expires = "expires="+d.toUTCString();
document.cookie = 'COOKIE_NAME' + "=" + "" + ";domain=domain.example;path=/;" + expires;
function deleteCookieByName(name) {
    let newCookie = document.cookie.replace(new RegExp(`${name}=[^ ]*( )?`), '');
    document.__defineGetter__("cookie", function() {return newCookie} );
}

제 경우에는 환경에 따라 블로우 코드를 사용했습니다.

  document.cookie = name +`=; Path=/; Expires=Thu, 01 Jan 1970 00:00:01 GMT;Domain=.${document.domain.split('.').splice(1).join('.')}`;

쿠키는 이 쿠키 설명서를 참조할 수 있습니다.

js에서 도메인으로 쿠키를 설정하는 경우:

 function setCrossSubdomainCookie(cookieName, cookieValue, minutes) {
  const assign = `${name}=${escape(value)};`
  const d = new Date()
  d.setTime(d.getTime() + minutes * 60 * 1000)
  const expires = `expires=${d.toUTCString()};`
  const path = "path=/;"
  const domain = "domain=.domainName.example;"
  document.cookie = assign + expires + path + domain
}

js에 도메인이 있는 쿠키를 삭제하는 경우:

export async function deleteCookie(name) {
  document.cookie = `${name}=; path=/; domain=.edyst.com; expires=${new Date(
    0
  ).toUTCString()}`
}

참고: 만료 시간이 없는 쿠키는 저장할 수 없지만 도메인은 선택 사항으로 제외할 수 있으며 쿠키를 오래 저장하고 싶거나 쿠키의 만료를 원하지 않는 경우 쿠키를 설정할 때 사용합니다.

 const expires = "expires=Fri, 31 Dec 9999 23:59:59 GMT"

언급URL : https://stackoverflow.com/questions/10593013/delete-cookie-by-name

반응형