nodejs的express-session模組之cookie.secure選項使用注意事項

微wx笑發表於2017-01-08

nodejs 的 express-session 模組之 cookie.secure 選項使用注意事項

請注意,將此設定為true時,如果瀏覽器沒有使用HTTPS連線,客戶端將不會將cookie傳送回伺服器。

請注意,secure:true是推薦的選項。但是,它需要一個啟用https的網站,即,安全cookie HTTPS是必需的。如果設定了安全,並且您通過HTTP訪問您的網站,則不會設定Cookie。如果您的node.js位於代理後面並且正在使用 secure:true,則需要在express中設定“trust proxy”:

var app = express()
app.set(`trust proxy`, 1) // trust first proxy
app.use(session({
  secret: `keyboard cat`,
  resave: false,
  saveUninitialized: true,
  cookie: { secure: true }
}))

以上內容參考:https://github.com/expressjs/session#cookie
我個人的測試得到的結果是,如果設定了:secure:true 選項,服務端使用“req.session.user = query_doc.userid;”設定Cookie,但是通過Chrome的開發者工具檢視,Response Header 中根本不會包含“set-cookie”,

也就是說 Cookie 根本不會傳送給客戶端瀏覽器。
rolling:強制在每一個response中都傳送session識別符號的cookie。如果把expiration設定為一個過去的時間那麼 那麼過期時間設定為預設的值。roling預設是false。如果把這個值設定為true但是saveUnitialized設定為false,那麼cookie不會被包含在響應中(沒有初始化的session)

secret 是必需的選項,這是用於簽名會話ID cookie的金鑰。這可以是單個金鑰的字串或多個祕密的陣列。如果提供了一組金鑰,只有第一個元素將用於簽名會話ID cookie,而在驗證請求中的簽名時,將考慮所有元素。參考:https://github.com/expressjs/session

======================文件資訊===========================

版權宣告:非商用自由轉載-保持署名-註明出處

署名(BY) :testcs_dn(微wx笑)

文章出處:[無知人生,記錄點滴](http://blog.csdn.net/testcs_dn)


相關文章