Express/connectJS を使用し、セッションで遊んでいます。ConnectJS のドキュメントにはシンプルなビュー カウンターが用意されており、これは私にとってはうまくいきます。
ただし、Cookie オプション 'secure:true' を設定すると動作しなくなります。
app.use(express.session({key:'NodeJS', secret:'cookie', cookie:{maxAge:3600000, secure:true}}));
私が見ているのは、「secure:false」の場合にのみ、セッション ID がリクエストで送信されることです。「secure:true」の場合、リクエストごとに新しい sessID を取得します。
これは失敗します。
Req header - SECURE:TRUE
Cookie connect.sid=s%3AP2q10tK255KdVcizJMwETG69.IU2idEzOVaCxahdcRoEGhTkUBK%2B1Evxc0boj97nJgHg;
connect.sess=s%3Aj%3A%7B%7D.opP3ZU2IoVMmmqws%2F5vFGB4s8FNXJ8R6RNZoF4KRNfU
これは機能します。
Req header - SECURE:FALSE
Cookie connect.sid=s%3AP2q10tK255KdVcizJMwETG69.IU2idEzOVaCxahdcRoEGhTkUBK%2B1Evxc0boj97nJgHg;
connect.sess=s%3Aj%3A%7B%7D.opP3ZU2IoVMmmqws%2F5vFGB4s8FNXJ8R6RNZoF4KRNfU;
NodeJS=s%3ArBKqb-Wptr_IJMYW6VzJVu__.2Yc3GL32L%2BHuY4L5RxepdiEirtvbSlIeErWVIHXm4uc
誰かがここで何が起こっているのかを簡単に説明できますか、または適切な説明を教えてくれますか?
=============フォローアップ==============
セッション オプション 'secure' は、http または https を使用して切り替えます。
現在、セッション管理には、session と cookieSession の 2 種類があります。以下は、これらのそれぞれからの出力です。
セッション
app.use(express.cookieParser());
app.use(express.session({key:'NodeJS', secret:'cookie', cookie:{maxAge:3600000, secure:false}}));
=== req.sessionID ===
b1t73i-MjbyPfQaZHo7_0aGn
==== req.sessionStore ===
{ sessions: { 'b1t73i-MjbyPfQaZHo7_0aGn': '{"cookie":{"originalMaxAge":3600000,"expires":"2013-08-12T19:13:37.169Z","secure":false,"httpOnly":true,"path":"/"},"views":1}' } generate: [Function], _events: { disconnect: [Function], connect: [Function] } }
=== req.session ===
{ cookie: { path: '/', _expires: Mon Aug 12 2013 12:13:37 GMT-0700 (PDT), originalMaxAge: 3600000, httpOnly: true, secure: false }, views: 1 }
==== req.cookies ===
{ NodeJS: 's:b1t73i-MjbyPfQaZHo7_0aGn.RDYYqfFjjAYFry9PmQW/fih+PPMTgNK6uwy5EW372CE', woot: 'woot' }
=== req.signedCookies ===
{ swoot: 'swoot' }
クッキーセッション
app.use(express.cookieParser());
app.use(express.cookieSession({key:'NodeJS', secret:'cookie', cookie:{maxAge:3600000, secure:false}}));
=== req.sessionID ===
undefined
==== req.sessionStore ===
undefined
=== req.session ===
{ views: 1, cookie: { path: '/', _expires: Mon Aug 12 2013 12:20:16 GMT-0700 (PDT), originalMaxAge: 3600000, httpOnly: true, secure: false } }
==== req.cookies ===
{ NodeJS: 's:j:{"views":1}.JtWQMoqzLEZBoGSxbxXfyqFJ2KIYyJG9GDSY4rxdVLQ', woot: 'woot' }
=== req.signedCookies ===
{ swoot: 'swoot' }
SESSION は操作できるオブジェクトを返しますが、SESSIONCOOKIE をどのように処理すればよいですか?