만료 날짜가없는 자바 스크립트 쿠키


143

절대 만료되지 않는 쿠키를 설정하고 싶습니다. 가능할까요?

 document.cookie = "name=value; expires=date; path=path;domain=domain; secure";

날짜를 정말로 크게 만들고 싶지 않습니다. 쿠키에 만료 매개 변수에 대한 값이 만료되지 않았는지 여부가 궁금합니다.

감사.


1
왜 날짜를 크게 만들고 싶지 않습니까?
AnthonyWJones

13
날짜를 크게하면 마치 바람을 피우는 것처럼 느껴집니다. 그것이 유일한 방법이라면 날짜를 크게 만들어야 할 것 같습니다.
Jose Vega

답변:


170

아니. 할 수 없습니다. 그렇게하는 '길'은 단지 만료 날짜를 2030 년과 같게 만드는 것입니다.


31
4 년 더 남았습니다. 쿠키를 업데이트하기를 바랍니다.
antony.ouseph.k

160
2020-쿠키 묵시의 해
JeffreyPia

14
젠장, 매년 점점 가까워지고 있습니다. 코드가 업데이트되기를 바랍니다.
kartsims

22
이제 2030 년으로 수정되었습니다. 우리는 운명을 10 년 더 연기합니다
Simeon Nakov

7
따라서 기본적으로, 2038 년 1 월 19 일, Chewie는 밀레니엄 팔콘에 앉아 은하계 맵 API에서 쿠키 정책 팝업에 대해 다시 불평 할 것입니다.
nickhar

108

원하는 것에 대한 구문이 없습니다. 만료를 설정하지 않으면 세션이 끝날 때 쿠키가 만료됩니다. 유일한 옵션은 임의로 큰 값을 선택하는 것입니다. 일부 브라우저는 2038 년이 지난 날짜에 ​​문제가 있음을 유의하십시오 (유닉스 시대 시간이 32 비트 정수를 초과하는 경우).


25
정확히 말하자면 2038-01-19, 03:14:08 UTC입니다.
Wilhelm Klopp

명확히하기 위해 : 모든 브라우저에서 동일한 방식으로 작동하는 규칙입니까? 만료 날짜를 설정하지 않으면 쿠키는 세션이 끝날 때까지만 지속됩니다.
Silver Ringvee

2
Expires또는 Max-Age지시문 없이 생성 된 쿠키 는 세션 쿠키입니다. 클라이언트가 종료 될 때 삭제됩니다. 그러나 웹 브라우저는 세션 복원을 사용 하여 브라우저를 닫지 않은 것처럼 대부분의 세션 쿠키를 영구적으로 만들 수 있습니다 . ( 출처 : MDN )
mfluehr

67

Mozilla 문서 에서 예제로 할 수 있습니다 .

 document.cookie = "someCookieName=true; expires=Fri, 31 Dec 9999 23:59:59 GMT";

추신

물론 인류가 여전히 10000 년의 첫 1 분 동안 코드를 사용한다면 문제가있을 것입니다 :)


89
금요일이 확실합니까?
David


5
npmjs.com/package/universal-cookie 사용하여 작동하지 않았습니다 . 2038 년 솔루션으로 갔다 . 나는 픽스가 있는지 확인하기 위해 2030 년에 돌아 오는 티켓을 썼습니다.
Hinrich

15

모든 쿠키는 쿠키 사양에 따라 만료되며 설정할 수있는 최대 값은

 2^31 - 1 = 2147483647 = 2038-01-19 04:14:07

최대 쿠키 수명은

$.cookie('subscripted_24', true, { expires: 2147483647 });

7
그 숫자는 나를 위해 작동하지 않았다. 약간의 시행 착오 후에, 내가 사용할 수있는 가장 높은 숫자는 99983090입니다 (만료 = 금, 9 월 12 일 275760 18:10:24 GMT). 더 높은 것은 "Invalid Date"를 반환했습니다
JeffreyPia

만기일 매개 변수를 jquery-cookie 또는 js-cookie에 전달하면 지금부터 만기일로 간주됩니다. 고정 날짜를 원하면 Date 객체를 대신 전달해야합니다.
Dario Seidl

위의 코드는 js-cookie 를 위해 폐기 된 jquery-cookie 플러그인을 사용합니다 .
Jens

2
바닐라 JS에 대한 :document.cookie = 'subscripted_24=true; expires=' + new Date(2147483647 * 1000).toUTCString();
옥사나 Romaniv

12

한 달 또는 그 밖의 만료 날짜에 쿠키를 설정 한 다음 사용자가 웹 사이트를 다시 방문 할 때마다 쿠키를 다시 할당 할 수 있습니다


1
이것은 끝없는 쿠키를 설정하는 정답입니다. 그리고 사용자가 절대로 사이트를 닫지 않는다는 점을 고려해야하는 경우 어떤 작업이나 특정 시간 후에 쿠키를 업데이트하기위한 추가 조건을 구현할 수 있습니다.
Alex Shink

10

만료 날짜를 설정하지 않으면 쿠키는 사용자 세션이 끝날 때 만료됩니다. 유닉스 시대가 32 비트 정수를 통과하기 직전에 날짜를 사용하는 것이 좋습니다. 당신이 사용하는 것과 쿠키에 그것을 넣어 document.cookie = "randomCookie=true; expires=Tue, 19 Jan 2038 03:14:07 UTC;그 가정, randomCookie당신이 설정하는 쿠키이며, true그것의 각각의 값입니다.


2

당신은 단지 할 수 없습니다 . 영원한 쿠키를 설정하는 데 사용할 정확한 코드는 없지만 오래된 트릭은 다음과 같습니다 current time + 10 years.

January 2038쿠키 ( 32 비트 int )에 대한 날짜가 지나면 날짜 가 즉시 삭제됩니다. 가까운 장래에 고쳐질 기적을 기원합니다. 들어 64 비트 INT , 년의 주위에 2110안전합니다. 시간이 지남에 따라 소프트웨어와 하드웨어는 변할 것이며, 오래된 것들 (현재 우리가 가지고있는 것들)에는 결코 적응하지 못할 것이므로 미래를 위해 지금 준비하십시오 .

2038 년 문제 참조



@GustvandeWal 그래? 나는 이미 그것을 읽었다. 나는 심지어 그 링크를 내 대답에 포함시켰다.
rhavendc

1
귀하의 답변 : 64 비트 int의 경우 2110 년 정도 안전합니다. 이것은 64 비트 컴퓨터가 32 비트 컴퓨터 (1970-> 2035-> 2110)의 두 배로 계산 될 것으로 예상하는 것처럼 보입니다.
Gust van de Wal

@GustvandeWal 내 말이 의심 스럽다면 죄송합니다. 영어로 말하면 가장 좋은 방법은 아닙니다. 그러나, 나는 당신이 방금 말한 그런 종류의 아이디어를 기대하거나 생각하지 않았습니다.
rhavendc

4
작은 메모 : 만약 우리가 33 비트 프로세서를 사용한다면, 2110 년은 의미가있을 것입니다.
hegez

1

클라이언트 측에서만 데이터를 읽으려는 경우 로컬 스토리지를 사용할 수 있습니다. 브라우저 캐시가 지워진 경우에만 삭제됩니다.


또는 브라우저가 닫히거나 컴퓨터가 종료되었습니다
Redwolf Programs

@RedwolfPrograms 브라우저를 닫거나 컴퓨터를 종료하면 언제 로컬 저장소가 지워 집니까?
Igor Jerosimić

@ IgorJerosimić 죄송합니다! 내 사이트에 버그가 있다고 생각한 것 같습니다.
Redwolf Programs

-2

쿠키를 다음과 같이 현재 연도보다 하나 더한 날짜로 설정하여 쿠키를 끝내지 않을 수 있습니다.

var d = new Date();    
document.cookie = "username=John Doe; expires=Thu, 18 Dec " + (d.getFullYear() + 1) + " 12:00:00 UTC";

1
1 년 후에 만료되며 무기한 지속되지 않습니다 (AFAIK).
Solomon Ucko
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.