現代のブラウザが要求を行うと、それはCookie
ヘッダに現在のドメイン(Webサイト)を一致するすべてのクッキーを追加します。ここで私はstackoverflow.comを訪問した場合、私のブラウザが送るかもしれないものの例です:
Cookie: acct=1234
初めてサイトを訪問したときに何クッキーがブラウザによって送信されません。その場合には(と所有者は、たとえば、ユーザーセッションを追跡するためにクッキーを利用したい場合)、サーバは、一般的に、Set-Cookie
ヘッダーで、このような応答します:
Set-Cookie: acct=5678; expires=Sat, 15 May 2050 15:32:57 GMT; domain=.stackoverflow.com
を(それはまた、path
を追加することができますすべてのhereを説明しsecure
、およびHttpOnly
オプション、)私は簡素化していますが、あなたが初めてサイトにアクセスすると、デフォルトでは、express-session
はSet-Cookie
を送信します。
rolling
がtrue
の場合、毎回送信されます。これは、すべてのページリフレッシュでクッキーの期限切れを継続的にロールフォワードするという望ましい副作用を持っています。新しい有効期限は、現在のサーバー時間にmaxAge
を追加することによって決定されます。
あなたがreq.session
オブジェクトを変更した場合、それはリクエストの終了時にバックセッションストアに保存されます。それ以外の場合は保存されません。何も変更が行われなかった場合でも、毎回保存するresave
true
に力を設定します。非合理に見えるかもしれませんが、特定の店舗でこれが必要な場合があります(ただし、リストを見ても、現在行っていないようです)。
クッキーが最初に設定されると、新しいセッションオブジェクトがメモリに作成され、要求の最後にストアに保存されます。これは、多くの人が訪問してからログインしたような意味のあるアクションを実行せずにバウンスしている場合には、データベース内の多くの領域を占める可能性があります。セッションがデフォルトのセッションオブジェクトから逸脱した場合(つまり、ログイン時にreq.session.user = user;
を設定するなど)をsaveUninitialized
〜false
に設定してください。
これらの値の特定の組み合わせ(他の値とともに)が予期しない動作を引き起こす可能性があることに注意してください。例えば、ドキュメントの状態:このオプション[ローリング]がtrueに設定されているが、saveUninitializedオプションがfalseに設定されている場合
は、クッキーが初期化されていないセッションと応答に設定されません。
https://stackoverflow.com/questions/40381401/when-use-saveuninitialized-and-resave-in-express-session –
https://stackoverflow.com/questions/31385726/whats-the-difference -in-save-initialunized-and-resave –