쿠키에 대해 확인하고 확인했습니다.

6199 단어 쿠키HTTP
쿠키에 대해 확인하고 검증했을 때의 메모.

쿠키 정보



Wikipedia의 내용을 알기 쉬운 생각이 듭니다.

HTTP 쿠키
  • HTTP는 상태 비 저장 프로토콜입니다.
  • 반면 쇼핑 사이트의 장바구니와 같은 동일한 사용자가 작업을 수행하면 서버 측에서 액세스하고 사용자를 식별하고 장바구니 목록을 표시하는 유스 케이스가 있습니다.
  • 위의 문제를 해결하는 한 가지 방법은 쿠키입니다.
  • 쿠키는 다음과 같이 서버와 클라이언트 간의 상태를 관리합니다.

    1. 웹 서버가 웹 브라우저에 상태를 구별하는 식별자를 HTTP 헤더에 포함하는 방식으로 전달합니다.
    2. 브라우저는 그 서버와 통신 할 때 주어진 식별자를 HTTP 헤더에 포함시켜 전송한다.
    3. 서버는 그 식별자를 바탕으로 컨텐츠의 내용을 사용자에게 맞추어 커스터마이즈 해, 브라우저에 건네준다. 필요하다면 새로운 식별자도 HTTP 헤더에 포함한다.
    이후 2, 3 반복.
  • 쿠키에서 데이터를 직접 처리하는 것보다 세션 ID를 구현하는 수단으로 자주 사용됩니다. 이 경우 실제 데이터는 서버가 세션 ID를 키로 유지합니다 (세션 ID를 서버에서 생성하고 관련 정보를 서버 측에 유지합니다. 정보는 DB에 보관 등)

  • 사양에 대해



    쿠키를 설정한 경우 서버 측에서 HTTP 응답에서 Set-Cookie 헤더를 지정합니다.
    서식이나 자세한 것은 이하.

    Set-Cookie

    key=value 형식으로 cookie-name=cookie-value를 지정합니다.
    대상 쿠키에 대한 추가 만료 날짜를 설정하려면 Expires를 지정하십시오.
    예를 들어 다음과 같이 쓰면 "type=ninja"라는 쿠키를 설정합니다.
    Set-Cookie: type=ninja; Expires=Tue, 19 Jan 2038 03:14:07 GMT
    
    Set-Cookie가 설정된 경우, 필요한 경우 브라우저는 Cookie HTTP 요청 헤더를 지정합니다.
    서식이나 자세한 것은 이하.

    쿠키

    앞에서 설명한 Set-Cookie가 설정되면 HTTP 요청 시 다음과 같이 설정됩니다.
    Cookie: type=ninja
    

    검증



    Node.js를 사용하여 다음 코드를 작성했습니다.
    Node.js 버전은 v10.0.0입니다.

    app.js
    var http = require('http');
    
    http.createServer(function (req, res) {
    
        res.setHeader('Content-Type', 'text/html');
        res.setHeader('Set-Cookie', ['type=ninja; Expires=Tue, 19 Jan 2038 03:14:07 GMT', 'language=javascript']);
    
        res.end('Hello World\n');
    
    }).listen(80); // 127.0.0.1の80番ポートで待機
    

    헤더를 작성하는 방법은 다음을 참고로 합니다.


    response.setHeader(name, value)
    response.setHeader('Set-Cookie', ['type=ninja', 'language=javascript']);

    이 경우 다음 두 가지 쿠키를 설정합니다.
  • type = ninja
  • language = javascript

  • 그리고 「type = ninja」의 분에게는 Expires 를 설정해, 유효기간을 설정하고 있습니다.

    실제로 요청해 보겠습니다.
    $curl http://13.230.4.195/ -v
    *   Trying 13.230.4.195...
    * TCP_NODELAY set
    * Connected to 13.230.4.195 (13.230.4.195) port 80 (#0)
    > GET / HTTP/1.1
    > Host: 13.230.4.195
    > User-Agent: curl/7.54.0
    > Accept: */*
    >
    < HTTP/1.1 200 OK
    < Content-Type: text/html
    < Set-Cookie: type=ninja; Expires=Tue, 19 Jan 2038 03:14:07 GMT
    < Set-Cookie: language=javascript
    < Date: Sun, 21 Jul 2019 05:06:04 GMT
    < Connection: keep-alive
    < Content-Length: 12
    <
    Hello World
    * Connection #0 to host 13.230.4.195 left intact
    

    HTTP 응답으로 Set-Cookie 가 설정되어 있는 점을 확인할 수 있었습니다.

    다음으로 브라우저(Chrome)에서도 확인해 봅니다.
    DeveloperTool의 네트워크 화면을 사용하여 HTTP 요청 응답의 상태를 확인합니다.

    처음 요청할 때는 다음과 같으며 HTTP 응답에서 쿠키가 설정되었음을 알 수 있습니다.



    다시 같은 URL에 액세스해 봅니다.



    이번에는 HTTP 요청에 쿠키가 설정됩니다.
    구체적인 HTTP 요청 설정 내용 Headers의 내용에서 확인합니다.



    쿠키 HTTP 요청 헤더에서 설정한 쿠키 정보가 서버에 제대로 전송되었음을 확인했습니다.

    좋은 웹페이지 즐겨찾기