前言
由于是小白一枚,所以在學(xué)習(xí)的時(shí)候難免磕磕碰碰,有時(shí)候一些傻x的問(wèn)題也能夠自己折騰好久。所以為了讓更多的學(xué)習(xí)者多條思路,稍微記錄一下自己犯得低級(jí)錯(cuò)誤。
正文
初學(xué)node開(kāi)發(fā),純粹興趣,結(jié)果卡在了驗(yàn)證session這里,因?yàn)榘l(fā)現(xiàn)無(wú)法往session儲(chǔ)存信息,百度各種找,各種方法試過(guò)去,結(jié)果還是不行。
代碼大概這樣:
const express = require('express')
const app = express()
let session = require('express-session')
app.use(session({
name: 'user',
secret: 'test',
cookie: {
maxAge: 60 * 60 * 1000,
secure: false
},
resave: true,
saveUninitialized: true
}))
app.get('/', function (req, res) {
req.session.username = '1234'
res.send({ desc: 'OK.' })
})
...
大概搞了大半天,加cookie-parser,改各種配置,發(fā)現(xiàn)在服務(wù)器端怎么配置都無(wú)法存進(jìn)入
于是這時(shí)候我就覺(jué)得應(yīng)該不是配置的問(wèn)題了,肯定有一個(gè)我想不到的地方不對(duì),究竟是什么地方。。。
于是我換個(gè)思路,現(xiàn)在我一直認(rèn)為問(wèn)題在于無(wú)法存入值到session, 有沒(méi)有可能,值已經(jīng)存進(jìn)去了,但是發(fā)起請(qǐng)求的時(shí)候創(chuàng)建了一個(gè)新的session呢?
這時(shí)候就需要知道上一個(gè)session與當(dāng)前session是否改變,這很好判斷嘛, 用session id
當(dāng)下把session id log出來(lái)看一下,發(fā)現(xiàn)果然每次的session id都不一致,這是為什么呢?
又扒拉扒拉的百度谷歌,又還是不行,這時(shí)候有點(diǎn)心灰意冷啊
于是
我又要換個(gè)思路去解決問(wèn)題 [滑稽臉]
既然session id不斷改變,也可以是瀏覽器端的問(wèn)題啊
問(wèn)題就出在這里了
因?yàn)槲覟g覽器端用的是react框架,也是新上手的(剛看完新手教程那種)
所以對(duì)很多事情都不清楚,就比如 - - > 鬼知道 isomorphic-fetch 默認(rèn)不操作cookie的啊
所以問(wèn)題就在于fetch的時(shí)候,返回的cookie沒(méi)有被保存,導(dǎo)致了每次發(fā)起請(qǐng)求的時(shí)候都沒(méi)帶cookie,所以每次請(qǐng)求的時(shí)候都是新的會(huì)話
需要在fetch的時(shí)候加上credentials的參數(shù)
fetch('http://www.xxx.com/', {credentials: 'include'})
.then(res -> {...})
如果你也是存不了session,或者你可以看看session id
后話
這個(gè)事情告訴我們。文檔還是要看的。。。盡管看不懂英語(yǔ)。。。