웹 프론트엔드 JS 튜토리얼 JavaScript 작업 쿠키 방법

JavaScript 작업 쿠키 방법

Nov 24, 2016 am 09:58 AM
cookie javascript

쿠키란

“쿠키는 방문자의 컴퓨터에 저장되는 변수입니다. 이 쿠키는 동일한 컴퓨터가 브라우저를 통해 페이지를 요청할 때마다 전송되며 JavaScript를 사용하여 생성하고 검색할 수 있습니다. 쿠키 값.” – w3school

쿠키는 프로필 정보 등 검색 정보를 저장하기 위해 방문한 웹사이트에서 생성된 파일입니다.

JavaScript 관점에서 쿠키는 문자열 정보에 불과합니다. 이 정보는 클라이언트의 컴퓨터에 저장되며 클라이언트 컴퓨터와 서버 간에 정보를 전송하는 데 사용됩니다.

이 정보는 JavaScript의 document.cookie를 통해 읽거나 설정할 수 있습니다. 쿠키는 주로 클라이언트와 서버 간의 통신에 사용되므로 JavaScript 외에 서버측 언어(예: PHP)에서도 쿠키에 접근할 수 있습니다.

쿠키에 대한 기본 지식

쿠키에는 크기 제한이 있습니다. 각 쿠키에 저장되는 데이터는 4kb를 초과할 수 없습니다. 쿠키 문자열의 길이가 4kb를 초과하면 이 속성은 빈 문자열을 반환합니다. .

쿠키는 궁극적으로 클라이언트 컴퓨터에 파일 형태로 저장되기 때문에 쿠키를 확인하고 수정하는 것이 매우 편리합니다. 그렇기 때문에 흔히 쿠키는 중요한 정보를 저장할 수 없다고 합니다.

각 쿠키의 형식은 다음과 같습니다. <쿠키 이름>=<값>; 이름과 값은 모두 법적 식별자여야 합니다.

쿠키에는 만료일이 있습니다. 기본적으로 쿠키의 수명주기는 브라우저가 닫힐 때 종료됩니다. 브라우저를 닫은 후에도 쿠키를 사용할 수 있도록 하려면 쿠키의 만료 날짜인 쿠키의 유효 기간을 설정해야 합니다.

사실 쿠키를 만드는 방법은 변수를 정의하는 방법과 다소 유사합니다. 둘 다 쿠키 이름과 쿠키 값을 사용해야 합니다. 동일한 웹사이트에서 여러 쿠키를 생성할 수 있으며, 여러 쿠키가 동일한 쿠키 파일에 저장될 수 있습니다.

쿠키 FAQ

쿠키에는 두 가지 유형이 있습니다.

현재 탐색 중인 웹사이트에서 설정한 쿠키

웹페이지에 삽입된 광고 또는 이미지에서 및 다른 도메인의 기타 제3자 쿠키(웹사이트는 이러한 쿠키를 사용하여 귀하의 사용 정보를 추적할 수 있습니다)

기본 지식에서는 방금 쿠키 수명 주기 문제를 언급했습니다. 실제로 쿠키는 크게 두 가지 상태로 나눌 수 있습니다. :

임시 쿠키입니다. 웹사이트는 현재 사용 중에 귀하의 개인정보 중 일부를 저장하며, 이 정보는 브라우저를 닫을 때 컴퓨터에서도 삭제됩니다.

만료 시간이 설정된 쿠키. 브라우저를 닫아도 이 정보는 컴퓨터에 그대로 남아 있습니다. 로그인 이름, 비밀번호 등을 입력하면 특정 사이트에 접속할 때마다 로그인할 필요가 없습니다. 이러한 종류의 쿠키는 며칠, 몇 달 또는 심지어 몇 년 동안 컴퓨터에 남아 있을 수 있습니다.

쿠키를 삭제하는 방법에는 두 가지가 있습니다.

브라우저 도구를 통해 쿠키를 삭제합니다(타사 도구가 있음, 브라우저 자체에도 이 기능이 있습니다)

쿠키 유효기간을 설정하여 쿠키를 삭제하세요

참고: 쿠키를 삭제하면 일부 웹페이지가 제대로 작동하지 않을 수 있습니다

브라우저는 설정을 통과하여 쿠키에 대한 액세스를 허용하거나 거부할 수 있습니다.

기능적, 성능상의 이유로 사용되는 쿠키의 수를 줄이고 작은 쿠키를 사용하는 것이 좋습니다.

쿠키 인코딩에 대한 자세한 내용은 쿠키 고급편에서 별도로 소개하겠습니다.

로컬 디스크에 있는 페이지인 경우 Chrome 콘솔에서 JavaScript를 사용하여 쿠키를 읽고 쓸 수 없습니다. 해결 방법...브라우저를 변경하세요^_^.

쿠키의 기본 사용법

1. 단순 액세스 작업

JavaScript를 사용하여 쿠키에 액세스할 때 Document 객체의 쿠키 속성을 사용해야 합니다. 쿠키 생성 및 수정 방법:

document.cookie = 'username=Darren';

위 코드에서 'username'은 쿠키 이름을 나타내고 'Darren'은 이 이름에 해당하는 값을 나타냅니다. 쿠키 이름이 없으면 새 쿠키가 생성되고, 있으면 쿠키 이름에 해당하는 값이 수정됩니다. 쿠키를 여러 번 생성하려면 이 방법을 반복해서 사용하면 됩니다.

2. 쿠키 읽기 작업

쿠키를 정확하게 읽는 것은 실제로 매우 간단합니다. 문자열만 사용하면 됩니다. 분석을 위해 w3school에서 이 코드를 복사하세요.

function getCookie(c_name){
    if (document.cookie.length>0){  //先查询cookie是否为空,为空就return ""
      c_start=document.cookie.indexOf(c_name + "=")  //通过String对象的indexOf()来检查这个cookie是否存在,不存在就为 -1  
      if (c_start!=-1){
        c_start=c_start + c_name.length+1  //最后这个+1其实就是表示"="号啦,这样就获取到了cookie值的开始位置
        c_end=document.cookie.indexOf(";",c_start)  
        //其实我刚看见indexOf()第二个参数的时候猛然有点晕,后来想起来表示指定的开始索引的位置...这句是为了得到值的结束位置。
        //因为需要考虑是否是最后一项,所以通过";"号是否存在来判断
        if (c_end==-1) c_end=document.cookie.length  
        return unescape(document.cookie.substring(c_start,c_end))  
        //通过substring()得到了值。想了解unescape()得先知道escape()是做什么的,都是很重要的基础,想了解的可以搜索下,在文章结尾处也会进行讲解cookie编码细节
      }
    }
    return ""
  }
로그인 후 복사

물론 쿠키를 읽는 방법은 배열, 정규식 등 다양하므로 여기서는 자세히 설명하지 않겠습니다.

3. 쿠키의 유효기간을 설정합니다

기사에 자주 등장하는 쿠키의 수명주기는 유효기간과 만료기간, 즉 쿠키의 존재시간입니다. 기본적으로 쿠키는 브라우저를 닫으면 자동으로 지워지지만 만료를 통해 쿠키의 유효 기간을 설정할 수 있습니다. 구문은 다음과 같습니다.

document.cookie = "name=value;expires=date";

위 코드의 날짜 값은 GMT입니다. (그리니치 시간) 형식의 경우 생성 방법은 다음과 같습니다.

var _date = new Date();

_date.setDate(_date.getDate( )+30);

_date.toGMTString();

위의 세 줄의 코드는 여러 단계로 구분됩니다.

new Date 인스턴스를 통해 현재 시간을 가져옵니다.

getDate() 메서드는 현재 지역 월의 특정 날짜를 가져온 다음 30을 더합니다. 이 쿠키를 30일 동안 로컬에 저장할 수 있기를 바랍니다.

그런 다음 setDate() 메소드를 통해 시간을 설정합니다.

마지막으로 toGMTString() 메소드를 사용하여 Date 객체를 문자열로 변환하고 결과를 반환합니다.

사용 생성 과정을 설명하기 위한 다음의 전체 기능 쿠키 과정에서 주의해야 할 사항 – w3school에서 복사했습니다. 쿠키에 정보를 저장하는 함수 만들기:

function setCookie(c_name, value, expiredays){
    var exdate=new Date();
    exdate.setDate(exdate.getDate() + expiredays);
    document.cookie=c_name+ "=" + escape(value) + ((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}
//使用方法:setCookie(&#39;username&#39;,&#39;Darren&#39;,30)
로그인 후 복사

이제 우리 기능은 일수에 따라 쿠키의 유효 시간을 설정하는 것입니다. 시간 등), 세 번째 코드 줄만 변경하세요.

exdate.setHours(exdate.getHours() +expireddays);

향후 쿠키를 이렇게 설정하세요. 유효 기간은 시간 단위입니다.

FAQ에 언급된 쿠키를 삭제하는 방법에는 두 가지가 있습니다. 지금 이야기할 내용은 유효 기간을 만료된 시간으로 설정하여 쿠키를 무효화하는 것입니다. 이제 유효 기간을 설정하는 방법이 생겼으니 관심 있는 친구들이 직접 설정해 보도록 하세요^_^. 쿠키에 대한 좀 더 심층적인 주제를 계속해서 살펴보겠습니다.

쿠키 고급편

1. 쿠키 경로 개념

기본 지식에서는 쿠키가 도메인과 경로의 개념을 가지고 있다고 언급했습니다. 쿠키의 경로입니다.

쿠키는 일반적으로 사용자가 페이지를 방문할 때 생성되지만, 이 쿠키는 쿠키가 생성된 페이지에서만 접근할 수 있는 것은 아닙니다.

기본적으로 쿠키를 생성한 페이지와 동일한 디렉터리 또는 하위 디렉터리에 있는 웹 페이지에만 접근할 수 있습니다. 이는 보안상의 이유로 다른 페이지에서 생성된 모든 페이지에 마음대로 접근할 수 있는 것은 아닙니다. 쿠키. 예:

"http://www.jb51.net/Darren_code/" 페이지에 쿠키를 생성하면 "/Darren_code/" 경로 아래의 페이지는 "http:// "와 같습니다. www.jb51.net/Darren_code/archive/2011/11/07/Cookie.html" 이 페이지는 기본적으로 쿠키 정보를 얻을 수 있습니다.

기본적으로 "http://www.jb51.net" 또는 "http://www.jb51.net/xxxx/"에서는 이 쿠키에 접근할 수 없습니다(보기만 해도 소용이 없습니다. ^_^).

따라서 이 쿠키를 다른 디렉터리나 상위 디렉터리에 액세스할 수 있게 만드는 방법은 쿠키 경로를 설정하여 얻을 수 있습니다. 예는 다음과 같습니다.

document.cookie = "이름=값;경로=경로"

document.cookie = "이름=값;만료=날짜;경로 =path "

빨간색 글꼴 경로는 쿠키의 경로입니다. 가장 일반적인 예는 쿠키를 다음 디렉터리에 넣는 것입니다. 어떤 하위 페이지가 쿠키를 생성하는지, 모든 모든 페이지에 액세스할 수 있습니다:

document.cookie = "name=Darren;path=/";

2. 쿠키 도메인 개념

동일한 도메인에서 쿠키에 접근하는 문제를 해결할 수 있는 방법에 대해 계속해서 이야기해 보겠습니다. . 구문은 다음과 같습니다:

document.cookie = "name=value;path=path;domain=domain";

빨간색 도메인은 쿠키 도메인 설정 값입니다.

例如 ”www.qq.com” 与 “sports.qq.com” 公用一个关联的域名”qq.com”,我们如果想让 “sports.qq.com” 下的cookie被 ”www.qq.com” 访问,我们就需要用到 cookie 的domain属性,并且需要把path属性设置为 “/”。例:

document.cookie = "username=Darren;path=/;domain=qq.com";

注:一定的是同域之间的访问,不能把domain的值设置成非主域的域名。

三.cookie 安全性

通常 cookie 信息都是使用HTTP连接传递数据,这种传递方式很容易被查看,所以 cookie 存储的信息容易被窃取。假如 cookie 中所传递的内容比较重要,那么就要求使用加密的数据传输。

所以 cookie 的这个属性的名称是“secure”,默认的值为空。如果一个 cookie 的属性为secure,那么它与服务器之间就通过HTTPS或者其它安全协议传递数据。语法如下:

document.cookie = "username=Darren;secure"

把cookie设置为secure,只保证 cookie 与服务器之间的数据传输过程加密,而保存在本地的 cookie文件并不加密。如果想让本地cookie也加密,得自己加密数据。

注:就算设置了secure 属性也并不代表他人不能看到你机器本地保存的 cookie 信息,所以说到底,别把重要信息放cookie就对了,囧…

四.cookie 编码细节

原本来想在常见问题那段介绍cookie编码的知识,因为如果对这个不了解的话编码问题确实是一个坑,所以还是详细说说。

在输入cookie信息时不能包含空格,分号,逗号等特殊符号,而在一般情况下,cookie 信息的存储都是采用未编码的方式。所以,在设置 cookie 信息以前要先使用escape()函数将 cookie 值信息进行编码,在获取到 cookie 值得时候再使用unescape()函数把值进行转换回来。如设置cookie时:

document.cookie = name + "="+ escape (value);

再看看基础用法时提到过的getCookie()内的一句:

return unescape(document.cookie.substring(c_start,c_end));

这样就不用担心因为在cookie值中出现了特殊符号而导致 cookie 信息出错了。

个人代码

/*设置Cookie*/
function setCookie(c_name, value, expiredays, path, domain, secure) { 
 var exdate = new Date(); //获取当前时间 
 exdate.setDate(exdate.getDate() + expiredays);  //过期时间  
 document.cookie = c_name + "=" + //cookie名称
 escape(value) + //将cookie值进行编码
 ((expiredays == null) ? "" : ";expires=" + exdate.toGMTString()) + //设置过期时间
 ((path == null) ? &#39;/&#39; : &#39;;path=&#39; + path) + //设置访问路径
 ((domain == null) ? &#39;&#39; : &#39;;domain=&#39; + domain) + //设置访问域
 ((secure == null) ? &#39;&#39; : &#39;;secure=&#39; + secure);  //设置是否加密
};
setCookie(&#39;test&#39;, &#39;name=sheng;sex=men;lancer=dullbear&#39;, 30);
setCookie(&#39;bb&#39;, &#39;name=sheng;sex=men&#39;, 30);
/*获取Cookie*/
function getCookie(c_name, index) {
 var cookies = document.cookie; //获取cookie值
 var cookieLen = cookies.length; //获取cookie长度
 if (cookieLen > 0) { //cookie不为空时
  var c_start = cookies.indexOf(c_name + &#39;=&#39;); //查找需要cookie值在cookie中序号
  if (c_start > -1) { //cookie值存在时
   c_start += c_name.length + 1; //获取cookie值开始序列号
   var c_end = cookies.indexOf(&#39;;&#39;, c_start); //获取cookie值结束序列号
   if (c_end == -1) { //当cookie是最后一个时
    c_end = cookieLen; //设置cookie值结束序列号为cookie长度
   };
   var cookieStr = unescape(cookies.substring(c_start, c_end)); //获取解码cookie值
   var cookieObj = cookieStr.split(&#39;;&#39;); //分割cookie值
   index = ((index == null) ? 0 : index); //判断index是否传值
   var goalObj = cookieObj[index]; //索引数组
   var goalStr = goalObj.split(&#39;=&#39;);
   var getcook = goalStr[1]; //获取需要取的cookie值
   return getcook;
  };
 } else {
  console.log(&#39;页面没有cookie&#39;);
 }
};
alert(getCookie(&#39;test&#39;, 0)); //打印查询cookie值
로그인 후 복사

   


본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전 By 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법 WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법 Dec 17, 2023 pm 02:54 PM

WebSocket 및 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법 소개: 지속적인 기술 개발로 음성 인식 기술은 인공 지능 분야의 중요한 부분이 되었습니다. WebSocket과 JavaScript를 기반으로 한 온라인 음성 인식 시스템은 낮은 대기 시간, 실시간, 크로스 플랫폼이라는 특징을 갖고 있으며 널리 사용되는 솔루션이 되었습니다. 이 기사에서는 WebSocket과 JavaScript를 사용하여 온라인 음성 인식 시스템을 구현하는 방법을 소개합니다.

쿠키는 어디에 저장되나요? 쿠키는 어디에 저장되나요? Dec 20, 2023 pm 03:07 PM

쿠키는 일반적으로 브라우저의 쿠키 폴더에 저장되며, 브라우저의 쿠키 파일은 일반적으로 바이너리 또는 SQLite 형식으로 저장됩니다. 쿠키 파일을 직접 열면 일부 왜곡되거나 읽을 수 없는 내용이 나타날 수 있으므로 사용하는 것이 가장 좋습니다. 쿠키를 보고 관리하기 위해 귀하의 브라우저에서 제공하는 쿠키 관리 인터페이스.

컴퓨터의 쿠키는 어디에 있습니까? 컴퓨터의 쿠키는 어디에 있습니까? Dec 22, 2023 pm 03:46 PM

컴퓨터의 쿠키는 사용된 브라우저 및 운영 체제에 따라 브라우저의 특정 위치에 저장됩니다. 1. Google Chrome, C:\Users\YourUsername\AppData\Local\Google\Chrome\User Data\Default\Cookies에 저장됨 등.

WebSocket 및 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 WebSocket 및 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 Dec 17, 2023 pm 05:30 PM

WebSocket과 JavaScript: 실시간 모니터링 시스템 구현을 위한 핵심 기술 서론: 인터넷 기술의 급속한 발전과 함께 실시간 모니터링 시스템이 다양한 분야에서 널리 활용되고 있다. 실시간 모니터링을 구현하는 핵심 기술 중 하나는 WebSocket과 JavaScript의 조합입니다. 이 기사에서는 실시간 모니터링 시스템에서 WebSocket 및 JavaScript의 적용을 소개하고 코드 예제를 제공하며 구현 원칙을 자세히 설명합니다. 1. 웹소켓 기술

모바일 쿠키는 어디에 있나요? 모바일 쿠키는 어디에 있나요? Dec 22, 2023 pm 03:40 PM

휴대폰의 쿠키는 모바일 장치의 브라우저 애플리케이션에 저장됩니다. 1. iOS 장치의 경우 쿠키는 Safari 브라우저의 설정 -> Safari -> 고급 -> 웹사이트 데이터에 저장됩니다. 2. Android 장치의 경우 쿠키가 저장됩니다. 설정 -> 사이트 설정 -> 크롬 브라우저의 쿠키 등에서

브라우저 쿠키가 저장되는 위치에 대한 자세한 설명 브라우저 쿠키가 저장되는 위치에 대한 자세한 설명 Jan 19, 2024 am 09:15 AM

인터넷의 대중화로 인해 우리는 브라우저를 사용하여 인터넷 서핑을 하는 것이 생활 방식이 되었습니다. 브라우저를 일상적으로 사용하다 보면 온라인 쇼핑, 소셜 네트워킹, 이메일 등 계정 비밀번호를 입력해야 하는 상황에 자주 직면하게 됩니다. 이 정보는 다음에 방문할 때 다시 입력할 필요가 없도록 브라우저에 기록되어야 합니다. 이때 쿠키가 유용합니다. 쿠키란 무엇입니까? 쿠키는 서버가 사용자의 브라우저에 전송하고 로컬에 저장되는 작은 데이터 파일을 말하며 일부 웹사이트의 사용자 행동을 포함합니다.

JavaScript와 WebSocket: 효율적인 실시간 일기예보 시스템 구축 JavaScript와 WebSocket: 효율적인 실시간 일기예보 시스템 구축 Dec 17, 2023 pm 05:13 PM

JavaScript 및 WebSocket: 효율적인 실시간 일기 예보 시스템 구축 소개: 오늘날 일기 예보의 정확성은 일상 생활과 의사 결정에 매우 중요합니다. 기술이 발전함에 따라 우리는 날씨 데이터를 실시간으로 획득함으로써 보다 정확하고 신뢰할 수 있는 일기예보를 제공할 수 있습니다. 이 기사에서는 JavaScript 및 WebSocket 기술을 사용하여 효율적인 실시간 일기 예보 시스템을 구축하는 방법을 알아봅니다. 이 문서에서는 특정 코드 예제를 통해 구현 프로세스를 보여줍니다. 우리

간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 간단한 JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법 Jan 05, 2024 pm 06:08 PM

JavaScript 튜토리얼: HTTP 상태 코드를 얻는 방법, 특정 코드 예제가 필요합니다. 서문: 웹 개발에서는 서버와의 데이터 상호 작용이 종종 포함됩니다. 서버와 통신할 때 반환된 HTTP 상태 코드를 가져와서 작업의 성공 여부를 확인하고 다양한 상태 코드에 따라 해당 처리를 수행해야 하는 경우가 많습니다. 이 기사에서는 JavaScript를 사용하여 HTTP 상태 코드를 얻는 방법과 몇 가지 실용적인 코드 예제를 제공합니다. XMLHttpRequest 사용

See all articles