Nice programing

자바 스크립트로 현재 페이지의 모든 쿠키를 나열하려면 어떻게해야합니까?

nicepro 2020. 12. 1. 19:45
반응형

자바 스크립트로 현재 페이지의 모든 쿠키를 나열하려면 어떻게해야합니까?


Javascript의 도움으로 현재 페이지와 관련된 모든 쿠키를 나열하는 방법이 있습니까? 즉, 쿠키의 이름을 모르지만 쿠키에 포함 된 모든 정보를 검색하려는 경우입니다.


현재 도메인에 대한 쿠키를 나열 할 수 있습니다.

function listCookies() {
    var theCookies = document.cookie.split(';');
    var aString = '';
    for (var i = 1 ; i <= theCookies.length; i++) {
        aString += i + ' ' + theCookies[i-1] + "\n";
    }
    return aString;
}

그러나 보안상의 이유로 다른 도메인에 대한 쿠키를 나열 할 수 없습니다.


var x = document.cookie; 
window.alert(x);

현재 사이트가 액세스 할 수있는 모든 쿠키를 표시합니다. 예를 들어 "username = Frankenstein"및 "username = Dracula"쿠키를 두 개 만든 경우이 두 줄의 코드는 "username = Frankenstein; username = Dracula"를 표시합니다. 그러나 만료일과 같은 정보는 표시되지 않습니다.


많은 사람들이 이미 document.cookie모든 쿠키를 제공 한다고 언급했습니다 http-only.

시간을 따라 잡기 위해 스 니펫을 추가하겠습니다.

document.cookie.split(';').reduce((cookies, cookie) => {
  const [ name, value ] = cookie.split('=').map(c => c.trim());
  cookies[name] = value;
  return cookies;
}, {});

스 니펫은 쿠키 값이 값인 키로 쿠키 이름이있는 객체를 반환합니다.


아니.

쿠키 처리를 위해 제공하는 유일한 API 브라우저는 키-값 쌍을 통해 쿠키를 가져오고 설정하는 것입니다. 모든 브라우저 는 도메인 이름으로쿠키 처리합니다 .

현재 도메인의 모든 쿠키에 대한 액세스는를 통해 수행됩니다 document.cookie.


아니에요. 현재 도메인과 관련된 정보 만 읽을 수 있습니다.


function listCookies() {
    let cookies = document.cookie.split(';')
    cookies.map((cookie, n) => console.log(`${n}:`, decodeURIComponent(cookie)))
}

function findCookie(e) {
  let cookies = document.cookie.split(';')
  cookies.map((cookie, n) => cookie.includes(e) && console.log(decodeURIComponent(cookie), n))
}

이것은 당신이있는 창문을위한 것입니다. 깨끗하고 간결하게 유지하려고했습니다.


리퍼러 URL과 같은 일부 쿠키가 포함 =되어 있습니다. 결과적으로 단순히 분할 =하면 불규칙한 결과가 발생하고 여기의 이전 답변은 시간이 지남에 따라 (또는 사용 깊이에 따라 즉시) 분석됩니다.

이것은 등호의 첫 번째 인스턴스 만 사용합니다. 쿠키의 키 값 쌍이있는 객체를 반환합니다.

// Returns an object of key value pairs for this page's cookies
function getPageCookies(){

    // cookie is a string containing a semicolon-separated list, this split puts it into an array
    var cookieArr = document.cookie.split(";");

    // This object will hold all of the key value pairs
    var cookieObj = {};

    // Iterate the array of flat cookies to get their key value pair
    for(var i = 0; i < cookieArr.length; i++){

        // Remove the standardized whitespace
        var cookieSeg = cookieArr[i].trim();

        // Index of the split between key and value
        var firstEq = cookieSeg.indexOf("=");

        // Assignments
        var name = cookieSeg.substr(0,firstEq);
        var value = cookieSeg.substr(firstEq+1);
        cookieObj[name] = value;
   }
   return cookieObj;
}

특정 페이지의 쿠키를 빠르게보기 위해 URL이 다음과 같이 설정된 즐겨 찾기 모음 "쿠키"바로 가기를 유지합니다.

javascript:window.alert(document.cookie.split(';').join(';\r\n'));

참고 URL : https://stackoverflow.com/questions/3400759/how-can-i-list-all-cookies-for-the-current-page-with-javascript

반응형