【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 が取得できました!