쿠키는 HTTP 프로토콜에서 어떻게 전달됩니까?


답변:


295

서버는 쿠키 헤더를 설정하기 위해 응답 헤더에 다음을 보냅니다.

Set-Cookie:이름 =

쿠키 세트가 있으면 브라우저는 요청 헤더에 다음을 보냅니다.

Cookie:이름 =

자세한 내용은 Wikipedia 의 HTTP 쿠키 기사를 참조하십시오.


쿠키가 GET / POST 동사에서만 작동하지만 CONNECT에서는 작동하지 않는 것이 사실입니까?
PerlDev

5
@PerlDev 내가 볼 수 있다는 것도 없다 rfc2109 말한다는 GET / POST 이외의 요청과 작업을해야하지,하지만 난 브라우저와 서버 구현은 이러한 경우에 그것을 구현하지 않을 수 용의자.
deinst

5
RFC 2109 에 따르면 사용자 에이전트 또는 브라우저가 여러 쿠키를 보내는 경우 세미콜론으로 구분 된 단일 필드에 쿠키를 넣습니다.Cookie: name1=value1; name2=value2; ...
jotrocken

34

쿠키는 요청 (클라이언트-> 서버)과 응답 (서버-> 클라이언트) 모두에서 HTTP 헤더로 전달됩니다.


2
그래서 요청이 있으면 모든 쿠키가 실제로 전송됩니까?
BKSpurgeon

32

다른 답변에 쓰여진 것 외에도 쿠키 경로, 쿠키의 최대 수명, 보안 여부에 관계없이 Set-Cookie 응답 헤더로 전달되는 다른 세부 정보. 예를 들어 :

Set-Cookie:이름 = [ ; expires=날짜 ] [ ; domain=도메인 ] [ ; path=경로 ] [ ; secure]


그러나 다음 HTTP 요청을 할 때 이러한 세부 정보가 모두 클라이언트에 의해 서버로 다시 전달되는 것은 아닙니다.

HttpOnly쿠키가 끝날 때 플래그를 설정 하여 쿠키가 httponly이고 스크립트에서 javascript 코드로 액세스 할 수 없음을 표시 할 수 있습니다. 세션 하이재킹과 같은 공격을 방지하는 데 도움이됩니다.

자세한 내용은 RFC 2109를 참조하십시오 . 또한 HTTP 쿠키가 설명하는 Nicholas C. Zakas의 기사를 살펴보십시오 .


2
여기 Zakas의 기사에 대한 직접 링크보다는 뒤로 링크는 다음과 같습니다 humanwhocodes.com/blog/2009/05/05/http-cookies-explained
조셉 익스트라

13

예제 스크립트를 resp로 작성하십시오.

#!/bin/bash

http_code=200
mime=text/html

echo -e "HTTP/1.1 $http_code OK\r"
echo "Content-type: $mime"
echo
echo "Set-Cookie: name=F"

그런 다음 실행 파일을 만들고 이와 같이 실행하십시오.

./resp | nc -l -p 12346

브라우저를 열고 URL을 검색하십시오 : http : // localhost : 1236 브라우저에서 보낸 쿠키 값이 표시됩니다

    [aaa @ bbbbbbbb] $ ./resp | nc -l -p 12346
    GET / HTTP / 1.1
    호스트 : xxx.xxx.xxx.xxx:12346
    연결 : 연결 유지
    캐시 제어 : max-age = 0
    수락 : text / html, application / xhtml + xml, application / xml; q = 0.9, image / webp, * / *; q = 0.8
    업그레이드 안전하지 않은 요청 : 1
    사용자 에이전트 : Mozilla / 5.0 (Windows NT 6.1) AppleWebKit / 537.36 (Gcko와 같은 KHTML) Chrome / 49.0.2623.112 Safari / 537.36
    수락 인코딩 : gzip, deflate, sdch
    수락 언어 : en-US, en; q = 0.8, ru; q = 0.6
    쿠키 : name = F

3
쿠키가 여러 개인 경우 어떻게합니까? 쉼표로 구분되어 있습니까?
Mark Buikema

그들이 새로운 쿠키로 설정되어 있다고 생각합니다. 쿠키 : name = F 쿠키 : name = A
EAzevedo

2
@MarkBuikema는 참조 docs.microsoft.com/en-us/windows/desktop/wininet/http-cookies을 . 쿠키 : <name> = <value> [; <name> = <value>] ...
Ben Wheeler
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.