HTTP Cookie 상태 관리 메커니즘 자세히 알 아 보기
쿠키 의 기원
쿠키 는 최초 로 인터넷 회사 의 직원 인 Lou Montulli 가 1993 년 3 월 에 발 명 된 후에 W3C 에 의 해 채택 되 었 고 현재 쿠키 는 표준 이 되 었 으 며 IE,Chrome,Firefox,Opera 등 모든 주류 브 라 우 저 를 지원 합 니 다.
쿠키 의 탄생 은 HTTP 프로 토 콜 의 타고 난 결함 때 문 입 니 다.HTTP 는 무상 태 프로 토 콜 입 니 다.간단 한 Request 와 Response 는 요청/응답 이 끝나 면 클 라 이언 트 와 서버 의 연결 이 닫 히 고 데 이 터 를 다시 교환 하려 면 새로운 연결 이 필요 합 니 다.서버 가 어떤 클 라 이언 트 인지 연결 에서 세 션 을 추적 할 수 없다 는 뜻 이다.
로그 인/카 트 와 같은 전형 적 인 응용 은 실현 되 지 않 는 다.예 를 들 어 사용자 A 가 쇼핑 몰 에서 구 매 하 는 상품 은 모두 A 의 카 트 에 넣 어야 한다.사용자 A 가 언제 구 매 하 든 이것 은 같은 세 션 에 속 하 는 것 으로 사용자 B 나 사용자 C 의 카 트 에 넣 을 수 없다.이것 은 같은 세 션 에 속 하지 않 는 다.
기본 원 리 는 그림 과 같다.
2.쿠키 조작
쿠키 에 대한 조작 은 다음 과 같 습 니 다.
1.이름(이름)
2.값(Value)
3.도 메 인(도 메 인)
4.경로(경로)
5.실효 날짜(Expires)
6.보안 표지(보안)
7.HttpOnly(서버 쪽 만)
쿠키 는 대부분 서버 에서 만 들 고 JS 에서 도 쿠키 를 만 들 수 있 지만 HttpOnly 형식의 JS 는 만 들 수 없습니다.
브 라 우 저 에서 제공 하 는 쿠키 API(document.cookie)는 너무 초라 해서 조금 만 밀봉 할 수 있 습 니 다.예 를 들 어 setter/getter 방식 으로 쿠키 함 수 를 사용 하면 훨씬 편리 합 니 다.
/*
* JS cookie cookie
*
* ** cookie**
* cookie(name)
*
* ** cookie**
* cookie(name, value)
* cookie(name, value, option)
*/
var cookie = function(name, value, option) {
var doc = document
if (value != undefined) { // set
option = option || {}
if (value === null) {
value = ''
option.expires = -1
}
var expires = ''
if (option.expires && (typeof option.expires == 'number' || option.expires.toUTCString)) {
var date = new Date
if (typeof option.expires == 'number') {
date.setTime(date.getTime() + (option.expires * 24 * 60 * 60 * 1000))
} else {
date = option.expires
}
// for IE
expires = '; expires=' + date.toUTCString()
}
var path = option.path ? '; path=' + option.path : ''
var domain = option.domain ? '; domain=' + option.domain : ''
var secure = option.secure ? '; secure' : ''
doc.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('')
} else { // get
var cookieValue = null
if (doc.cookie && doc.cookie != '') {
var cookies = doc.cookie.split(';')
for (var i = 0; i < cookies.length; i++) {
var cookie = $.trim(cookies[i]).split('=')
if ( cookie[0] == name && cookie.length > 1 ) {
try {
cookieValue = decodeURIComponent(cookie[1])
} catch(e) {
cookieValue = cookie[1]
}
break
}
}
}
return cookieValue
}
};
물론 더 편리 한 것 도 있다.https://github.com/florian/cookie.js,더 많은 편리 함 수 를 제공 합 니 다.3.쿠키 유형
1.일반 쿠키,서버 쪽 과 JS 모두 생 성 가능,JS 접근 가능
2.HttpOnly 쿠키 는 서버 에서 만 생 성 되 며 JS 는 읽 을 수 없습니다.주로 보안 을 고려 합 니 다.
3.안전 한 쿠키(https 만),서버 쪽 과 JS 모두 만 들 수 있 고 JS 는 HTTPS 에서 만 접근 할 수 있 습 니 다.
예 를 들 어 시 나 닷 컴 클 라 우 드 테스트 페이지:http://snandy.sinaapp.com/php/cookie.php저 는 3 개의 쿠키 를 심 었 습 니 다.각각 c1,c2,c3 입 니 다.
$d1 = mktime(1,1,1,1,1,2018);
// cookie
setcookie("c1", "Jack", $d1);
// cookie, https, 6
setcookie("c2", "John", $d1, NULL, NULL, TRUE);
// HttpOnly cookie 7
setcookie("c3", "Resig", $d1, NULL, NULL, NULL, TRUE);
Firefox 로 접근내 가 심 은 세 가 지 는 모두 있 는데,saeut 는 시 나 닷 컴 구름 이 심 은 것 이다.
firebug 콘 솔 에 document.cookie 를 입력 하 십시오.
보 실 수 있 습 니 다.c2,c3 는 모두 접근 할 수 없습니다.c2 는 안전 한 쿠키 입 니 다.https 프로 토 콜 에서 방문 해 야 합 니 다.c3 는 httpOnly 이 고 JS 는 접근 할 수 없습니다.이것 은 주의해 야 합 니 다.
접근 프로 토 콜 을 https 로 변경:https://snandy.sinaapp.com/php/cookie.phpfirebug 를 콘 솔 로 전환 하고 document.cookie 를 입력 하면 c2 를 볼 수 있 습 니 다.
4.쿠키 의 구덩이
1.쿠키 가 너무 많 거나 수량 이 너무 많 을 때 페이지 방문 오류 가 발생 합 니 다.예 를 들 어 다음 과 같은 알림 이 나타 납 니 다.
따라서 사이트 의 쿠키 는 관리 가 필요 하고 함부로 쿠키 를 심 을 수 없습니다.또한 path 를 지정 하여 쿠키 를 지정 한 범위 내 에 한정 합 니 다.
웹 사이트 browsercookielimits.squawky.net,각 브 라 우 저 쿠키 크기 기록
2.중국 어 를 저장 하려 면 유 니 코드 인 코딩(encodeURIComponent)이 필요 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
빠른 팁: SingleStoreDB의 데이터 API 사용SingleStoreDB는 HTTP 연결을 통해 SQL 문을 실행하는 데 사용할 수 있는 을 제공합니다. 이 짧은 문서에서는 이 데이터 API를 사용하는 방법에 대한 예를 보여줍니다. A는 무료 SingleStore...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.