前言
由于是小白一枚,所以在學(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ì)話(huà)
需要在fetch的時(shí)候加上credentials的參數(shù)
fetch('http://www.xxx.com/', {credentials: 'include'})
.then(res -> {...})
如果你也是存不了session,或者你可以看看session id
后話(huà)
這個(gè)事情告訴我們弧可。文檔還是要看的蔑匣。。棕诵。盡管看不懂英語(yǔ)裁良。。校套。