JS 에서 쿠키 사용 및 단점 설명
쿠키 는'달 고 나'라 는 뜻 으로 W3C 조직 이 최초 로 넷 스 케 이 프 커 뮤 니 티 에서 발전 시 킨 메커니즘 이다.현재 쿠키 는 표준 이 되 었 으 며 IE,Netscape,Firefox,Opera 등 모든 주류 브 라 우 저 는 쿠키 를 지원 합 니 다.
HTTP 는 상태 가 없 는 프로 토 콜 이기 때문에 서버 는 네트워크 연결 에서 만 고객 의 신분 을 알 수 없습니다.어 떡 하지?클 라 이언 트 들 에 게 통행증 을 발급 하 세 요.한 사람 당 하나씩,누가 방문 하 든 반드시 자신의 통행증 을 휴대 해 야 합 니 다.이렇게 하면 서버 가 통행증 에서 고객 의 신분 을 확인 할 수 있다.이것 이 바로 쿠키 의 작업 원리 다.
Cookie 는 사실상 작은 텍스트 정보 입 니 다.클 라 이언 트 가 서버 에 요청 합 니 다.서버 가 이 사용자 상 태 를 기록 하려 면 response 를 사용 하여 클 라 이언 트 브 라 우 저 에 Cookie 를 발급 합 니 다.클 라 이언 트 브 라 우 저 는 쿠키 를 저장 합 니 다.브 라 우 저가 이 사 이 트 를 다시 요청 할 때 브 라 우 저 는 요청 한 웹 사 이 트 를 이 쿠키 와 함께 서버 에 제출 합 니 다.서버 는 이 쿠키 를 검사 하여 사용자 상 태 를 식별 합 니 다.서버 는 필요 에 따라 쿠키 의 내용 도 수정 할 수 있다.
쿠키 메커니즘
프로그램 에서 세 션 추적 은 매우 중요 한 일이 다.이론 적 으로 한 사용자 의 모든 요청 작업 은 같은 세 션 에 속 해 야 하고,다른 사용자 의 모든 요청 작업 은 다른 세 션 에 속 해 야 하 며,양 자 는 혼동 해 서 는 안 된다.예 를 들 어 사용자 A 가 슈퍼마켓 에서 구 매 하 는 모든 상품 은 A 의 카 트 에 넣 어야 한다.사용자 A 가 언제 구 매 하 든 이것 은 같은 세 션 에 속 하 는 것 으로 사용자 B 나 사용자 C 의 카 트 에 넣 을 수 없다.이것 은 같은 세 션 에 속 하지 않 는 다.
웹 프로그램 은 HTTP 프로 토 콜 로 데 이 터 를 전송 합 니 다.HTTP 프로 토 콜 은 무상 태 프로 토 콜 입 니 다.데이터 교환 이 끝나 면 클 라 이언 트 와 서버 의 연결 이 닫 히 고 데 이 터 를 다시 교환 하려 면 새로운 연결 이 필요 합 니 다.서버 가 연결 에서 세 션 을 추적 할 수 없다 는 뜻 이다.즉,사용자 A 가 하나의 상품 을 구 매 하여 카 트 에 넣 었 는데 상품 을 다시 구 매 할 때 서버 는 이 구 매 행위 가 사용자 A 의 세 션 인지 사용자 B 의 세 션 인지 판단 할 수 없다.이 세 션 을 추적 하려 면 메커니즘 을 도입 해 야 합 니 다.
쿠키 는 바로 이러한 메커니즘 이다.그것 은 HTTP 프로 토 콜 의 무상 태 부족 을 보완 할 수 있다.세 션 이 등장 하기 전에는 기본적으로 모든 사이트 가 쿠키 로 세 션 을 추적 합 니 다.
JS 설정 쿠키:
A 페이지 에 변수 username 의 값("jack")을 쿠키 에 저장 하려 면 key 값 이 name 이 고 해당 하 는 JS 코드 는 다음 과 같 습 니 다.
document.cookie="name="+username;
쿠키 의 이름 이나 값 에 분점(;)을 사용 할 수 없습니다.쉼표(,),등호(=)및 빈 칸.쿠키 의 이름 에서 이 정 도 는 쉽게 할 수 있 지만 저장 할 값 은 확실 하지 않 습 니 다.어떻게 이 값 들 을 저장 합 니까?방법 은 escape()함수 로 인 코딩 을 하 는 것 입 니 다.일부 특수 기 호 를 16 진법 으로 표시 할 수 있 습 니 다.예 를 들 어 빈 칸 은'20%'로 인 코딩 되 어 쿠키 값 에 저장 할 수 있 고 이 방안 을 사용 하면 중국어 난호 의 발생 을 피 할 수 있 습 니 다.
document.cookie="str="+escape("I love ajax");
// document.cookie="str=I%20love%20ajax";
escape()인 코딩 을 사용 한 후 값 을 꺼 낸 후 unescape()를 사용 하여 디 코딩 을 해 야 원래 의 쿠키 값 을 얻 을 수 있 습 니 다.JS 쿠키 읽 기:
쿠키 에 저 장 된 내용 을 다음 과 같이 가정 합 니 다.
name=jack;password=123
B 페이지 에서 변수 username 의 값 을 가 져 오 는 JS 코드 는 다음 과 같 습 니 다.
var username=document.cookie.split(";")[0].split("=")[1];
//JS cookies !
// cookies
function setCookie(name,value)
{
var Days = 30;
var exp = new Date();
exp.setTime(exp.getTime() + Days*24*60*60*1000);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
쿠키 읽 기
function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}
cookies
function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
//
setCookie("name","hayden");
alert(getCookie("name"));
//
// setCookie ok;
//
function setCookie(name,value,time)
{
var strsec = getsec(time);
var exp = new Date();
exp.setTime(exp.getTime() + strsec*1);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
function getsec(str)
{
alert(str);
var str1=str.substring(1,str.length)*1;
var str2=str.substring(0,1);
if (str2=="s")
{
return str1*1000;
}
else if (str2=="h")
{
return str1*60*60*1000;
}
else if (str2=="d")
{
return str1*24*60*60*1000;
}
}
// :
//s20 20
//h , 12 :h12
//d ,30 :d30
setCookie("name","hayden","s20");
쿠키 단점쿠키 는 클 라 이언 트 데 이 터 를 지속 적 으로 저장 하 는 데 편 의 를 제공 하고 서버 저장 의 부담 을 분담 하지만 한계 가 많 습 니 다.
첫째:각 도 메 인 이름 에 최대 20 개의 쿠키 를 생 성 합 니 다.
1.IE6 또는 더 낮은 버 전 최대 20 개 쿠키
2.IE7 과 그 후의 버 전 은 마지막 으로 50 개의 쿠키 가 있 을 수 있 습 니 다.
3.Firefox 최대 50 개의 쿠키
4.chrome 과 Safari 는 딱딱 한 제한 을 하지 않 았 다.
IE 와 Opera 는 최근 에 가장 적 게 사용 한 쿠키 를 정리 하고 Firefox 는 무 작위 로 쿠키 를 정리 합 니 다.
쿠키 의 최대 크기 는 약 4096 바이트 이 며 호환성 을 위해 일반적으로 4095 바이트 를 초과 할 수 없습니다.
IE 는 사용자 데 이 터 를 지속 적 으로 저장 할 수 있 는 uerData 라 는 저장 소 를 제공 하여 IE 5.0 부터 지원 합 니 다.각 데 이 터 는 최대 128 K,도 메 인 이름 당 최대 1M 이다.이 영구적 인 데 이 터 는 캐 시 에 두 고 캐 시가 정리 되 지 않 으 면 계속 존재 합 니 다.
장점:높 은 확장 성과 가용성
1.좋 은 프로 그래 밍 을 통 해 쿠키 에 저 장 된 session 대상 의 크기 를 제어 합 니 다.
2.암호 화 및 보안 전송 기술(SSL)을 통 해 쿠키 가 해 제 될 가능성 을 감소 합 니 다.
3.쿠키 에 만 민감 하지 않 은 데 이 터 를 저장 하고 도 난 당 하 더 라 도 큰 피 해 는 없 을 것 입 니 다.
4.쿠키 의 생명 기 를 제어 하여 영원히 유효 하지 않 게 합 니 다.도둑 은 기한 이 지난 쿠키 를 받 을 가능성 이 높다.
단점:
1.'Cookie'수량 과 길이 의 제한각 domain 은 최대 20 개의 쿠키 만 있 을 수 있 으 며,각 쿠키 의 길 이 는 4KB 를 초과 할 수 없 으 며,그렇지 않 으 면 차단 된다.
2.안전성 문제.쿠키 가 차단 되면 모든 session 정 보 를 얻 을 수 있 습 니 다.암호 화 하 더 라 도 도움 이 되 지 않 습 니 다.차단 자 는 쿠키 의 의 미 를 알 필요 가 없 기 때문에 그 는 쿠키 를 그대로 전달 하면 목적 을 달성 할 수 있 습 니 다.
3.일부 상 태 는 클 라 이언 트 에 저장 할 수 없습니다.예 를 들 어 중복 제출 폼 을 방지 하기 위해 서 는 서버 에 계산 기 를 저장 해 야 합 니 다.만약 우리 가 이 계산 기 를 클 라 이언 트 에 저장한다 면,그것 은 아무런 작용 도 하지 않 을 것 이다.
위 에서 말 한 것 은 편집장 님 께 서 소개 해 주신 JS 에서 쿠키 의 사용 과 단점 에 대한 설명 입 니 다.여러분 께 도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 댓 글 을 남 겨 주세요.편집장 님 께 서 바로 답 해 드 리 겠 습 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.