0. 소개, 쿠키와 세션이 필요한 이유
HTTP 요청은 stanteless (사용자의 로그인 상태를 기록 할 수 없음 등)이므로 사용자의 로그인 상태 및 기타 정보를 저장하려면 특정 메커니즘이 필요합니다. 다음에 웹 서비스에 액세스 할 때 로그인할지 여부를 다시 확인할 필요가 없습니다. 세션 메커니즘과 쿠키 메커니즘은 각각 서버와 브라우저 측의 솔루션입니다.
1. 쿠키에 대해
1.1 쿠키는 무엇입니까?
쿠키, 원래 의미 쿠키. 브라우저쪽에 사용자 상태 정보를 저장 한 다음 백엔드에 액세스 할 때이 정보의 일부를 백엔드로 다시 가져옵니다.
쿠키의 내용에는 주로 이름, 가치, 만료 시간, 경로 및 도메인이 포함됩니다.
1.2 쿠키 범주
만료 시간을 설정하지 않는 세션 쿠키 쿠키는 브라우저의 메모리에 저장됩니다. 브라우저가 닫히면 쿠키가 파괴됩니다. (종종 세션으로 사용)
일반 쿠키는 만료 시간을 설정하고 하드 드라이브에 저장합니다.
1.3 신청 방법
요청을 시작할 때 : 브라우저는 모든 저장된 쿠키를 점검합니다. 쿠키에 의해 선언 된 작업 범위 (경로 및 도메인에 의해 결정됨)가 요청할 리소스의 위치보다 크거나 동일하면 쿠키는 요청 리소스의 HTTP 요청 헤더에 첨부되어 서버로 전송됩니다.
요청을 처리 할 때 : 서버 측에서 요청 헤더에 포함 된 쿠키 정보는 일반적으로 확인됩니다 (예 : 로그인 확인). 수표가 통과되면 실제 비즈니스 처리를 수행 할 수 있습니다.
쿠키 또는 쿠키 정보를 찾지 못하는 것과 같은 확인이 실패하면 (위조 될 수 있음) 로그인하여 로그인 한 후 쿠키 정보를 응답으로 반환하십시오. 브라우저는 다음에 사용하기 위해 반환 된 쿠키 정보를 기반으로 하드 디스크 또는 메모리에 저장합니다. ,,,
2. 세션에 대해
2.1 세션이란 무엇입니까?
세션은 서버 측에서 사용자 상태 정보를 저장하는 데 사용됩니다.
2.2 사용 방법
브라우저가 요청을 시작하면 서버는 먼저 요청 헤더에서 세션 정보를 읽습니다. 세션 정보를 찾지 못하거나 SessionID를 로컬로 검색 할 수없는 경우, 그렇지 않은 경우 서버 하드 디스크 또는 Memcache에 새로운 SessionID가 생성되어 저장됩니다.
브라우저는 응답을받습니다. 반환 된 SessionID는 다음 요청에 사용하기 위해 로컬 메모리에 저장됩니다. 로컬로 저장된 세션의 구현 중 하나는 쿠키에 대한 정보를 저장하는 것이지만 실제로 쿠키가 세션을 저장하는 유일한 솔루션은 아닙니다. URL 재 작성을 사용할 수도 있습니다 (URL 경로 바로 뒤에 세션 ID를 추가).
3. 쿠키와 세션의 주요 차이점
1. 스토리지 위치에 약간의 차이가 있습니다.
쿠키 데이터는 클라이언트의 브라우저에 저장되며 서버 측에 저장할 필요가 없습니다. 세션 데이터는 서버에 배치되며 로컬 메모리 사본도 있습니다.
2. 다른 안전
쿠키는 세션만큼 안전하지 않습니다. 일반 쿠키는 로컬 하드 디스크에 저장되므로 해커는 URL 및 기타 수단을 위조하여 로컬 하드 디스크 저장 상태에서 쿠키를 얻은 다음 사용자의 민감한 정보를 훔쳐서 XS 공격을 시작할 수 있습니다.
세션은 다릅니다. 사용자 가이 웹 사이트에 로그인 할 때 XSS 공격이 시작될 때만 세션 정보를 얻을 수 있습니다. 브라우저를 닫으면 세션이 파괴됩니다. 보안은 쿠키보다 낫습니다.
3. 크로스 도메인 지원의 차이
쿠키는 크로스 도메인 액세스를 지원합니다. 예를 들어 도메인 속성이 ".biaodianfu.com"으로 설정된 경우 접미사가있는 모든 도메인 이름 ".biaodianfu.com"이 쿠키에 액세스 할 수 있습니다. 크로스 도메인 쿠키는 이제 Google, Baidu, Sina 등과 같은 인터넷에서 널리 사용됩니다. 세션은 크로스 도메인 액세스를 지원하지 않습니다. 세션은 그가있는 도메인 이름 내에서만 유효합니다.
4. 서버 압력의 차이
세션은 서버 측에 저장되며 각 사용자는 세션을 생성합니다. 동시에 액세스하는 사용자가 많으면 많은 세션을 생성하고 많은 메모리를 소비합니다. 따라서 동시 방문이 매우 높은 Google, Baidu 및 Sina와 같은 웹 사이트를 세션을 사용하여 추적 할 수는 없습니다. 서버 성능 감소를 고려하면 쿠키를 사용해야합니다.
5. 다른 액세스 방법
ASCII 줄은 쿠키에만 저장할 수 있습니다. 유니 코드 문자 또는 이진 데이터가 필요한 경우 먼저 인코딩이 필요합니다. 자바 물체는 쿠키에서 직접 액세스 할 수 없습니다. 약간 복잡한 정보를 저장하는 것은 쿠키를 사용하는 것이 매우 어렵습니다.
이 세션은 문자열, 정수, 목록,지도 등을 포함하되 이에 국한되지 않는 모든 유형의 데이터에 액세스 할 수 있습니다. 세션을 Java 컨테이너 클래스로 생각할 수 있습니다.
6. 쿠키의 크기는 제한적입니다
단일 쿠키로 저장된 데이터는 4K를 초과 할 수 없으며 많은 브라우저가 사이트를 제한하여 최대 20 개의 쿠키를 절약합니다.
세션과 쿠키에 대한 위의 간단한 이해는 내가 당신과 공유하는 모든 콘텐츠입니다. 나는 당신이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.