2009-10-07 2 views
35

JavaScript를 사용하여 쿠키 만료일을 읽을 수 있습니까?쿠키 만료일 읽기

그렇다면 어떻게됩니까? 그렇지 않다면 내가 볼 수있는 소스가 있습니까?

답변

40

Javascript를 통해 쿠키의 만료 날짜를 가져올 수 없습니다. 키 - 값 쌍만 document.cookie을 통해 노출됩니다.

+3

네를 -이 설정되어있어 한 후, 유효 기간이 불투명; expires와 브라우저에 대한 다음 JSON 객체에 다시 - 그럼, 당신이 쿠키를 다시 작성할 때 두 배 날짜를 사용 그것 만기가 될 때까지 document.cookie에 나타날 것이며, 그 시점에서 멈출 것입니다. –

+4

생성시에 [쿠키 데이터에 명시 적으로 저장] (http://stackoverflow.com/questions/3417087/jquery-cookie-expiration-value/15221924#15221924)하면 날짜를 읽을 수 있습니다. –

7

Chrome을 사용하는 경우 개발자 도구의 '애플리케이션'탭으로 이동하여 왼쪽 사이드 바에서 '쿠키'항목을 찾을 수 있습니다. 여기에서 설정된 쿠키를 확인할 도메인을 선택하면 만료일과 함께 해당 도메인과 연결된 쿠키 목록이 제공됩니다.

+1

이것이 왜 더 많은 upvotes가 없는지 이해가 가지 않습니다. 정확히 쿠키를 설정 한 JS 스크립트의 새로운 기능이 작동하는지 확인하는 것이 었습니다. 감사합니다. –

+27

대답이 아니기 때문에 ... "Chrome으로 이동"은 "JavaScript를 사용하여 쿠키 만료일을 읽는 방법"에 대한 대답이 아닙니다. – Tomino

+0

와우, 정말 멋진 기능입니다. Chrome은 결코 나를 놀라게하지 않습니다. – CrazyTim

1

이 논쟁의 여지가있는 사람들이 있습니다. 그러나 한 가지 해결책은 다른 쿠키를 동시에 만들고 원래의 쿠키가 만들어진 것과 평행하게 시간/스탬프를 저장하는 것입니다. 같은 시간과 방법으로 업데이트하면 새 쿠키에서 시간을 쉽게 얻을 수 있습니다 (또는 소스 쿠키에 시간/스탬프를 추가).

이것이 논쟁의 여지가있는 이유는 사용자가 자신의 공간을 차지하고 있기 때문에 쿠키를 사용자 PC에 저장하는 아이디어가 오랫동안 인기를 얻지 못했기 때문입니다. 그러나 나는 작은 타임 스탬프 쿠키가 너무 끔찍하다는 것을 정말로 의심한다.

시간이 지나면 브라우저는 사용 가능한 쿠키를보고하지 않는다는 것을 기억하십시오. 브라우저가 쿠키를 표시 할 수 있지만 JS가 액세스하려고하면 쿠키가 표시되지 않습니다.

또한 Firefox의 WebDeveloper 도구 모음에서 Firefox> 개인 정보 설정을 통과 한 쿠키가 올바르게 표시된다는 것을 알았습니다.

0

이렇게하는 또 다른 방법은 만료 날짜를 쿠키 본문에 쓰고 그 다음에 다시 쓰려면 다시 읽는 것입니다. 환상적인 js-cookies 라이브러리와 함께 작동하도록했습니다.

설정은 다음과 같습니다

// Set cookie expiration as a number (of days) 
var paywallDuration = 30; 

// When you set the cookie, add the `expires` key/value pair for browsers 
// Also add `expirationDate` key/value pair into JSON object 
Cookies.set('article-tracker', { 
    expirationDate : paywallDuration, 
    totalArticlesRead: 1 
}, { 
    expires : paywallDuration, 
    domain : 'example.com' 
}); 

쿠키 및 재 작성을 읽는 것은이 방법 직선적이다. js-cookie의 getJSON() 메서드를 사용하여 설정 한 만료 날짜를 읽습니다.

var existingPaywallDuration = Cookies.getJSON('article-tracker').expirationDate; 

Cookies.set('article-tracker', { 
    expirationDate: existingPaywallDuration, 
    totalArticlesRead: 4 
}, { 
    expires : existingPaywallDuration, 
    domain : 'example.com' 
});