Developer's memo

開発メモ

【node.js】 Cookie が別のページに渡せない

node.js+express環境 で Cookie を使おうとしたら以下のようなことが起きました。

 

① hoge.com/test のページで Cookie 'aaa' に 値 1 を保存

res.cookie('aaa', 1);

 

② hoge.com/test2 のページで ①で保存した Cookie 'aaa' を取得 

var cookies = {};
req.headers.cookie && req.headers.cookie.split(';').forEach(function( cookie ) {
     var parts = cookie.split('=');
     cookies[ parts[ 0 ].trim() ] = ( parts[ 1 ] || '' ).trim();
});
if( cookies['aaa'] ){
     var aaa=cookies['aaa'];
}

変数 aaa に 1 が入っている予定でしたがからっぽ…

hoge.com/test では取得できたので、hoge.com/test2 に Cookie が送られていないっぽい。

 

Cookieを覗いたりして調べてみると、Cookie 'aaa' に /test の path属性がついてる様子。

つまり、hoge.com/test/* のページにしか Cookie 'aaa' は送られていないということです。

  

なるほど…では path 属性を指定して Cookie を作成してあげればよさそうだ。

ということで、①を以下に変更。

res.cookie('aaa', 1, { path: '/' });

これで hoge.com/test2 でもCookie が取得できました!