2016-04-26 9 views
1

私は、Cookieを含むNode.jsでプログラムを作成しています。私はエクスプレスのような図書館を使いたくない。私はクッキーを使用するために次のコードをオンラインで見つけましたが、私はそれがどのように動作するのか正確にはわかりません。誰かが私のためにそれを分解することができますか?また、私はコードのどの部分がシステム内のクッキーを読み、どの部分がそれらを書き込むのかわからない。あなたもそれを明確にすることができますか?Node.jsのCookieを理解していません

ありがとうございました。ここで

はコードです:

var http = require('http'); 

function parseCookies(cookie) { 
    return cookie.split(';').reduce(
     function(prev, curr) { 
      var m =/*([^=]+)=(.*)/.exec(curr); 
      var key = m[1]; 
      var value = decodeURIComponent(m[2]); 
      prev[key] = value; 
      return prev; 
     }, 
     { } 
    ); 
} 

function stringifyCookies(cookies) { 
    var list = [ ]; 
    for (var key in cookies) { 
     list.push(key + '=' + encodeURIComponent(cookies[key])); 
    } 
    return list.join('; '); 
} 

http.createServer(function (request, response) { 
    var cookies = parseCookies(request.headers.cookie); 
    console.log('Input cookies: ', cookies); 
    cookies.search = 'google'; 
    if (cookies.counter) 
    cookies.counter++; 
    else 
    cookies.counter = 1; 
    console.log('Output cookies: ', cookies); 
    response.writeHead(200, { 
    'Set-Cookie': stringifyCookies(cookies), 
    'Content-Type': 'text/plain' 
    }); 
    response.end('Hello World\n'); 
}).listen(1234); 

答えて

0

クッキーは、ブラウザがサーバにリクエストを送信する際にヘッダとして送信されるテキストのほんの一部です。サーバーは、必要に応じてCookieを変更し、ヘッダーとしてブラウザに送り返すことができます。

クッキーのための規則は(あなたの例では、なぜdecodeURIComponentencodeURIComponent仕事である!)だけでURLのクエリ文字列のように、彼らはアンパサンド(&)で区切られたキーと値のペアであるということです。

parseCookiesは、Cookie文字列から、Cookieを表すオブジェクトに読み取ります。例えば。

// Input 
"foo=bar&baz=42" 

// Output 
{foo: "bar", baz: 42} 

stringifyCookies

は、クッキーオブジェクトを受け取り、それがクッキーに戻って変換します意味をなさない

// Input 
{foo: "bar", baz: 42} 

// Output 
"foo=bar&baz=42" 

していますか?