>  기사  >  백엔드 개발  >  쿠키의 원리와 현상 분석

쿠키의 원리와 현상 분석

小云云
小云云원래의
2018-03-27 15:19:091964검색

쿠키에 관해서는 http 프로토콜부터 시작해야 합니다. http 프로토콜이 무엇인가요? 말 그대로 합의는 합의입니다. 합의가 있는 경우 최소 두 명의 참가자가 있어야 하며 참가자 간의 의사소통은 이러한 사양을 따라야 합니다.

바이윤과 쿠로츠치가 함께 있는 것 같다. 앞으로 두 사람이 합의한 언어로 의사소통을 하게 되고, 바이윤이 왼손을 뻗으면 쿠로츠치가 이것을 보고 판단할 것이다. 액션, 아, 그렇군요. 다리를 때리고 싶어서 바로 앞으로 뛰쳐나와 다리를 때렸습니다. 바이윤은 오른손을 내밀었고, 쿠로츠치는 이를 바라보며 '아, 이제 물 마실 시간이구나'라고 생각해 곧바로 물을 건넸다. 이때 바이윤은 왼발을 내밀었고, 쿠로츠치는 곧바로 키스했다. 그를. 두 사람의 의사소통이 서로의 합의에 따라 이루어졌기 때문에 이해하기 쉽고 효율적으로 이루어졌기 때문이다.

http 프로토콜도 마찬가지입니다. 이 프로토콜의 참가자는 클라이언트(Baiyun)와 서버(Black Earth)입니다.

클라이언트와 서버 간의 통신이 쉽고 이해하기 쉬워지는 것은 바로 http 프로토콜 때문입니다. Baiyun과 Kurotsuchi가 합의한 대로 통신 방법을 미리 표준화하지 않았다면 Baiyun이 왼발을 뻗을 것이라고 상상해 보세요. 그리고 아마도 쿠로츠치 삼촌은 그가 발로 차버릴 것이라고 생각했을 것입니다.

다음으로 http 프로토콜의 특징이 무엇인지 살펴보겠습니다.

1. 클라이언트/서버 모드 지원

3. 유연함

5.

클라이언트/서버 모드 지원: 간단히 말해서 두 사람 간의 통신을 지원합니다. 즉, Baiyun과 Heitui가 서로 대화할 수 있도록 지원합니다.

간단하고 편리함: 백운과 헤이투의 의사소통처럼 왼손을 쭉 뻗고 오른손을 뻗는 것만큼 간단합니다. http 프로토콜의 경우에도 마찬가지입니다. 클라이언트 요청이든 서버 응답이든 해당 메시지 헤더, 메서드 및 메시지 본문을 설정하면 상대방에게 전달될 수 있으며 양측 모두 상대방의 의미를 이해할 수 있습니다.

유연성이 있는 이유는 HTTP가 모든 유형의 데이터 객체 전송을 허용하기 때문입니다. 전송 유형은 Content-Type으로 표시할 수 있습니다.

연결 없음은 클라이언트가 서버에 요청하고 서버가 응답을 완료한 후 자동으로 링크 연결을 끊는 것을 의미합니다. 마치 바이 윤이 왼손을 뻗고, 쿠로츠치가 와서 다리를 망치고, 자동으로 다른 일을 하기 위해 걸어가는 것과 같습니다.

Stateless는 서버에 요청한 클라이언트를 의미하며, 서버가 응답한 후에는 이 연결 통신에 대한 데이터를 기록하지 않습니다. 바이윤이 왼손을 뻗은 것처럼 쿠로츠치가 다리를 망치러 다가왔다. 당신은 쿠로츠치 삼촌에게 다리를 때릴 때 무슨 말을 했는지 물었습니다.

물론, 그보다 훨씬 더 많은 http 프로토콜이 있습니다. 자세한 내용은 위의 http 프로토콜에 대한 지식을 바탕으로 나중에 설명하겠습니다.

위에서 언급했듯이 Baiyun과 Kurotsuchi는 매우 효율적이고 간단한 자체 통신 방법에 동의했습니다. 그러나 그들의 통신에도 특정 문제가 있습니다. 즉, Kurotsuchi 삼촌이 Baiyun에게 제공하는 http 프로토콜의 무국적성입니다. 그는 두 사람 사이에 무슨 말을 했는지 몰랐습니다. 그의 뇌는 제대로 작동하지 않았고 그는 몇 가지만 기억할 수 없었습니다. 바이윤은 쿠로츠치에게 네 손이 너무 커서 너무 아프다고 말했다. 이 말을 들은 검은머리 삼촌은 즉시 손을 좀 더 세게 풀더니 걸어갔다. 망치질 후에 다른 일을 하려고요. 쿠로츠치가 떠나자마자 바이윤이 다시 왼손을 뻗었다. 쿠로츠치가 빠르게 다가와서 다리를 때렸지만, 여전히 바이윤은 불안해졌다. 부드럽게 손을 대자, 구타한 노파의 다리가 마비됐다. 쿠로츠치 삼촌은 "키스, 정말 기억이 안 난다"며 당황한 표정을 지었다.

무엇을 해야 할까요?

이러면 쿠로츠치 삼촌이 바이윤을 화나게 만들 것이므로 누군가가 바이윤이 손을 뻗거나 다리를 뻗을 때마다 그 메모에 쿠로츠치 삼촌의 개인적인 요구사항이 기록될 것입니다. 쪽지가 그에게 왔을 때 그는 쪽지를 읽으면서 달려가 대응 작업을 수행했다. 응답이 완료된 후 그는 쪽지를 백윤에게 돌려주어 백윤이 자신의 요청을 작성하고 쪽지를 보낼 수 있도록 했다. 다음에 그를 만나러 왔을 때 그것을 쿠로츠치에게 던져라.

이 방법은 다소 무례하지만 쿠로츠치 삼촌이 아무것도 기억하지 못하는 문제를 해결합니다.

예, 위의 참고 사항은 실제로 오늘 이야기할 쿠키입니다. 클라이언트가 서버에 요청을 시작할 때 클라이언트는 서버에 요청하기 위해 쿠키를 가져옵니다. 이 쿠키를 사용하면 마지막 요청을 기억할 수 있습니다. 상태 및 관련 정보는 통신에 상태와 메모리를 갖게 합니다.

클라이언트가 서버에 요청할 때마다 쿠키 정보를 가져오기 때문에 많은 사람들이 쿠키 사용을 권장하지 않습니다. 크기가 증가하면 폐기물 대역폭이 매우 커집니다.

그런 다음 쿠키의 몇 가지 기본 작동 원리를 설명하겠습니다.

쿠키는 주로 HTTPHeader 헤더를 통해 데이터를 전송합니다. 즉, 데이터는 요청 헤더와 메시지 헤더로 전달됩니다. 쿠키 메커니즘은 Set-Cookie 헤더와 Cookie 헤더라는 두 가지 헤더를 정의합니다. set-cookie는 서버 응답의 메시지 헤더에 존재합니다. 쿠키는 클라이언트 요청의 메시지 헤더에 존재합니다.

쿠키의 작동과정은 다음과 같습니다.



(1) 클라이언트는 브라우저의 주소창에 웹서버의 URL을 입력하고, 브라우저는 읽기 요청을 보냅니다. 웹 페이지.

(2) 서버는 요청을 받은 후 Set-Cookie 헤더를 생성하고 이를 HTTP 메시지에 넣은 다음 클라이언트에 다시 보내 세션을 시작합니다.

(3) 클라이언트가 응답을 받은 후 세션을 계속하려면 Set-Cookie-ie의 내용을 꺼내 Cookie.txt 파일을 구성하고 클라이언트 컴퓨터에 저장합니다.

(4) 클라이언트가 다시 서버에 요청을 하면 브라우저는 먼저 컴퓨터에서 해당 웹사이트에 해당하는 Cookie.txt 파일을 찾습니다. 발견되면 이 Cookie.txt를 기반으로 쿠키 헤더가 생성되어 HTTP 요청 메시지에 포함되어 서버로 전송됩니다.

(5) 서버는 쿠키 헤더가 포함된 요청을 수신하고 쿠키에서 사용자 관련 정보를 검색한 후 클라이언트가 요청한 페이지 응답을 생성하여 클라이언트에 전달합니다. 브라우저에서 수행된 모든 웹 페이지 요청은 기존 쿠키 파일을 전달할 수 있습니다. 예를 들어 브라우저는 웹 페이지 작업을 열거나 새로 고칩니다.

쿠키의 기본 작동 원리입니다.

또한 PHP에서 쿠키를 설정하는 방법에는 두 가지가 있습니다.

1 setCookie 함수 호출

2 session_start 함수 호출

다음은 session_start()가 작성되면 서버가 수행하는 작업에 대한 간략한 설명입니다. 서버는 session_id라는 파일을 생성하고 동시에 set-cookie 헤더를 클라이언트에 보냅니다. 내용은 phpsessid = 서버에 저장된 세션의 파일 이름, 즉 클라이언트가 응답을 받으면입니다. 즉, session_start에는 실제로 setCookie 작업이 포함되어 있지만 setCookie만큼 유연하지는 않습니다.

관련 추천:

PHP 세션 제어를 위한 쿠키에 대한 자세한 설명

쿠키 사용에 대한 자세한 설명

쿠키를 함께 배워봐요

위 내용은 쿠키의 원리와 현상 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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