>  기사  >  웹 프론트엔드  >  쿠키와 세션의 차이점 요약

쿠키와 세션의 차이점 요약

不言
不言앞으로
2019-04-11 11:14:042936검색

이 글은 쿠키와 세션의 차이점을 요약한 것입니다. 도움이 필요한 친구들이 참고할 수 있기를 바랍니다.

HTTP 상태 비저장 프로토콜

HTTP 상태 비저장 프로토콜은 프로토콜에 트랜잭션 처리를 위한 메모리 능력이 없음을 의미합니다. 상태가 없다는 것은 후속 처리에 이전 정보가 필요한 경우 다시 전송해야 하므로 연결당 전송되는 데이터 양이 증가할 수 있음을 의미합니다. 반면에 서버는 이전 정보가 필요하지 않을 때 더 빠르게 응답합니다. 소개
클라이언트 및 서버와 동적으로 상호 작용하는 웹 애플리케이션이 등장한 후
HTTP의 상태 비저장 특성은 이러한 애플리케이션의 구현을 심각하게 방해합니다 . 과거와 미래를 연결해야 합니다. 예, 간단한 장바구니 프로그램도 사용자가 이전에 어떤 제품을 선택했는지 알아야 합니다. 그 결과, 이 HTTP 연결 상태를 유지하기 위한 두 가지 기술이 이 탄생했는데, 하나는 Cookie이고, 다른 하나는 Session#🎜 🎜#입니다. HTTP 자체는 상태 비저장 연결 프로토콜입니다. 클라이언트와 서버 간의 상호 작용을 지원하려면 상호 작용에 대한 상태를 저장하는 다양한 기술이 필요하며 이러한 기술은 Cookie와 Session#🎜🎜 # . 쿠키는 클라이언트를 통해 상태를 유지하기 위한 솔루션입니다. 정의에 따르면, 쿠키는 서버가 클라이언트에게 보내는 특별한 정보이며, 이 정보는 텍스트 파일 형식으로 클라이언트에 저장되며, 클라이언트는

내가 갈 때마다 특별한 메시지를 가져올 때마다 서버에 요청하세요. 좀 더 구체적으로 설명하자면, 사용자가 브라우저를 사용하여 쿠키를 지원하는 웹사이트에 액세스하면 사용자는 사용자 이름을 포함한 개인 정보를 제공하고 이를 서버에 제출한 다음 서버는 해당 하이퍼바이저를 클라이언트에 반환합니다. 물론 이러한 정보는 HTTP 응답 본문 (응답 본문) 에 저장되지 않습니다. HTTP 응답 헤더(응답 헤더)에 저장됨 ; 클라이언트 브라우저가 서버로부터 응답을 받으면 브라우저는 이 정보를 Windows 운영 체제의 경우 이라는 통합 위치에 저장합니다. 다음에서 저장된 쿠키를 찾을 수 있습니다. [시스템 디스크]:문서 및 설정[사용자 이름]쿠키 디렉토리 이후부터 클라이언트가 서버에 요청을 보내면 해당 쿠키가 다시 서버로 전송됩니다. 이번에는 HTTP 요청 헤더(Request Header)에 쿠키 정보가 저장됩니다. 기울임꼴 텍스트

개발
쿠키와 같은 기술을 구현하면 서버는 클라이언트 브라우저로부터 요청을 받은 후 요청 헤더에 저장된 쿠키를 분석하여 클라이언트별 정보를 얻을 수 있으며 이를 통해 클라이언트 콘텐츠에 해당하는 정보를 동적으로 생성할 수 있습니다. 일반적으로 많은 웹사이트의 로그인 인터페이스에서 "기억해 주세요"와 같은 옵션을 볼 수 있는데, 로그인하기 전에 이를 확인하면 다음에 웹사이트를 방문할 때 반복적이고 번거로운 로그인을 수행할 필요가 없으며, 이 기능은 쿠키를 통해 구현됩니다.

Cookie와 반대되는 솔루션은 서버를 통해 상태를 유지하는 Session입니다. 세션이라는 단어에는 많은 의미가 포함되어 있으므로 여기서는 세션의 의미를 명확히 할 필요가 있습니다. 우선, 우리는 일반적으로 세션을 세션으로 변환하여 클라이언트 브라우저와 서버 간의 일련의 대화형 작업을 세션이라고 부를 수 있습니다. 이 의미부터 시작하여 세션 기간, 세션 중에 수행되는 작업 등을 언급합니다. 둘째, 세션은 클라이언트를 위해 서버가 공개하는 저장 공간과 여기에 저장된 정보를 의미합니다. 상태를 유지하기 위해. 이 의미론을 시작으로 세션에 어떤 콘텐츠를 저장할지, 키 값을 기반으로 세션에서 일치하는 콘텐츠를 얻는 방법 등을 언급하겠습니다.
Session을 사용하기 위한 첫 번째 단계는 물론 Session을 만드는 것입니다. 그러면 세션은 언제 생성되나요? 물론, 서버측 프로그램이 실행되는 동안 생성되는데, 다른 언어로 구현된 애플리케이션마다 Session을 생성하는 방법이 다릅니다. Java에서는 HttpServletRequest의 getSession 메소드를 호출하여 생성합니다(true를 매개변수로 사용). . 세션을 생성할 때 서버는 세션에 대한 고유한 세션 ID를 생성하며, 이 세션 ID는 세션이 생성된 후 후속 요청에서 생성된 세션을 다시 얻는 데 사용됩니다. 세션 관련 메서드를 호출하면 콘텐츠가 추가됩니다. 이 내용은 서버에만 저장되며 세션 ID만 클라이언트에 전송됩니다. 클라이언트가 다시 요청을 보내면 이 세션 ID를 가져오고 서버는 해당 세션을 기반으로 찾습니다. 세션 ID를 확인하고 다시 사용하세요. 이러한 과정을 통해 사용자의 상태가 유지됩니다.
요약하자면, HTTP 자체는 클라이언트와 서버 간의 상호 작용을 지원하기 위해 상호 작용에 대한 상태를 저장하는 다양한 기술을 사용해야 하며 이러한 다양한 기술이 바로 쿠키와 세션입니다. .

쿠키

저장 위치
쿠키 데이터는 고객의 브라우저에 저장되며 서버는 해당 정보를 알 수 있습니다.
사용
만료 시간이 브라우저에 설정되어 있지 않으면 쿠키는 메모리에 저장됩니다. 브라우저가 닫히면 수명 주기가 종료됩니다. 이러한 유형의 쿠키를 세션 쿠키라고 합니다. 쿠키 만료 시간이 브라우저

에 설정되어 있으면 쿠키는 하드 드라이브에 저장됩니다. 브라우저를 닫은 후에도 쿠키 데이터는 계속 존재하며 만료 시간이 끝날 때까지 사라지지 않습니다. 저장소

단일 쿠키로 저장되는 데이터는 4KB
를 초과할 수 없습니다. 서버는 클라이언트 브라우저에 최대
20개의 쿠키를 저장할 수 있으며, 브라우저는 최대 300개의 쿠키를 저장할 수 있습니다. 쿠키는 문자열 유형만 저장할 수 있습니다. . text
application 시나리오 형태의 쿠키 기술에는 4가지 구성 요소가 있습니다. HTTP 응답 메시지에 쿠키 헤더 라인이 있고, HTTP 요청 메시지에 쿠키 헤더 라인이 있습니다. 클라이언트 시스템 쿠키 파일에 저장되어 있으며 웹사이트에 있는 백엔드 데이터베이스에서 사용자가 웹사이트에 로그인했는지 여부를 확인하여 자동 로그인(또는 비밀번호 기억)이 가능하도록 합니다. 다음에 사용자가 로그인할 때
쿠키를 삭제하면 로그인할 때마다 해당 로그인 정보를 다시 입력해야 합니다.
마지막 로그인 시간과 기타 정보를 저장하세요. 마지막으로 본 페이지 저장 방문 횟수 찾아보기
쿠키에 경로 매개변수가 설정되어 있으면 동일한 웹사이트의 다른 경로에 있는 쿠키가 서로 접근할 수 없습니다.

단점쿠키와 세션의 차이점 요약

제한된 크기, 사용자가 쿠키를 작동(비활성화)할 수 있어 기능이 제한되고, 보안이 낮으며, 일부 상태를 클라이언트에 저장할 수 없으며, 방문할 때마다 쿠키를 서버로 보내야 하므로 대역폭이 낭비됩니다. 쿠키 데이터에는 쿠키가 특정 경로에만 속하도록 제한할 수 있는 경로 개념이 있습니다.

기타

쿠키와 세션의 차이점 요약

쿠키와 세션의 차이점 요약

데이터 요청을 위한 쿠키 전달

쿠키 데이터는 항상 동일한 소스의 http 요청에서 전달됩니다(필요하지 않은 경우에도). 즉, 쿠키는 브라우저와 서버 간에 앞뒤로 전달됩니다.
새 페이지가 요청될 때마다 쿠키가 사용되므로 대역폭이 낭비됩니다. 또한 쿠키는 범위를 지정해야 하며 도메인 간에 호출할 수 없습니다.

Session

저장 위치
세션 데이터는 서버에 저장됩니다. 클라이언트는 해당 정보를 알지 못하지만 특별한 방법(memcache, redis)을 통해 세션을 유지할 수 있습니다.
사용 방법

세션은 언제 생성되나요? , 세션 일관성 문제

세션은 일정 기간 동안 서버에 저장됩니다. 접속량이 증가하면 서버 성능을 더 많이 차지하게 되므로 서버 성능을 저하시키기 위해 쿠키를 사용해야 합니다. 클라이언트가 세션 생성을 요청하면 서버는 먼저
클라이언트의 요청 세션 식별자 (세션 ID라고 함)가 포함되어 있는지 확인합니다. 만약 그렇다면 이는 세션이 생성되었음을 의미합니다. , 서버는 세션 ID에 따라 이 세션을 검색하고 사용합니다( 검색할 수 없는 경우 새 세션이 생성됩니다 ). 클라이언트에 대해 생성되고 세션 ID와 관련된 세션이 생성됩니다. 세션 ID 값은 반복되지도 않고 모방할 패턴을 찾기도 쉽지 않은 문자열이어야 합니다. 이 응답의 저장을 위한 클라이언트입니다. 이 세션 ID를 저장하는 방법은 쿠키를 사용하여 상호 작용 프로세스 중에 브라우저가 규칙에 따라 이 ID를 서버에 자동으로 보낼 수 있도록 하는 것입니다. 일반적으로 쿠키는 클라이언트에 세션 ID를 저장하는 데 사용됩니다. 상호 작용 중에 브라우저는 규칙에 따라 세션 ID를 서버에 보냅니다. 사용자가 쿠키를 비활성화하는 경우 response.encodeURL(url)을 통해 달성할 수 있는 URL 재작성을 사용해야 합니다. encodeURL에 대한 API의 끝은 브라우저가 쿠키를 지원할 때 URL이 어떤 처리도 수행하지 않는다는 것입니다. 브라우저가 쿠키를 지원하지 않으면 URL이 다시 작성되고 SessionID가 액세스 주소에 추가됩니다.

Storage
session

크기에는 제한이 없습니다
세션에 저장되는 것은 객체입니다. 세션은 Hashtable과 유사한 데이터 구조를 통해 저장되며 모든 유형의 객체를 지원할 수 있습니다. 객체)
응용 시나리오 세션은 각 사용자의 개인 정보를 저장하는 데 사용되며 변수 값은 서버 측에 저장되며 서로 다른 고객은 SessionID로 구분됩니다.
온라인몰 장바구니
    사용자 로그인 정보 저장
  1. 특정 데이터를 세션에 넣어 동일 사용자의 다른 페이지에서 사용 가능
  2. 사용자의 불법 로그인 방지
  3. 접속
  4. 세션에서는 경로를 구분할 수 없습니다. same one 사용자가 웹사이트를 방문하는 동안 모든 세션은 어디에서나 액세스할 수 있습니다.
단점
세션이 저장하는 항목이 많을수록 서버 메모리를 더 많이 차지합니다. 온라인 사용자가 많은 웹사이트의 경우 서버의 메모리 사용량이 상대적으로 크고 쿠키에 따라 달라집니다. (세션 ID는 쿠키에 저장됩니다.) 쿠키가 비활성화된 경우에는 URL 재작성을 사용하는 것이 안전하지 않습니다. 세션 변수 생성은 매우 임의적이며 언제든지 호출될 수 있습니다. 따라서 개발자가 세션 변수를 과도하게 사용하면 코드가 발생할 수 있습니다. 읽을 수 없고 유지 관리가 어렵습니다.

위 내용은 쿠키와 세션의 차이점 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제