🐈
express-sessionでcookieが保存されないとき
Nest.jsでこんなふうにsessionを使って、cookieに情報を保存したい。
@Get()
findAll(@Session() session: Record<string, any>) {
session.visits = session.visits ? session.visits + 1 : 1;
}
しかしフロントエンドから実行してもブラウザにcookieに保存されない。
色々調べていたらこちらの記事を発見。
とても基本的な間違いで、axiosでrequestするときにwithCredentialsがtrueになっていなかった。
const API = axios.create({
baseURL: 'http://localhost:5000',
withCredentials: true,
});
以前もこの設定で間違えていたのでメモしておく。
Same siteのエラーでset cookieがエラーになるとき
deployして本番環境で、same siteのエラーが出てset cookieが失敗するときがある。
その場合は、cookie: { secure: true, sameSite: 'none' }
、cookieの設定を追加。
app.use(
Session({
name: 'session-name',
secret: 'session-secret'
resave: true,
saveUninitialized: true,
cookie: { secure: true, sameSite: 'none' }
})
)
Discussion