Това ме побърква. Опитах се да прочета изходния код на lusca, но го разбрах трудно.
Проверих и няколко примера, но тъй като всяка конфигурация е различна и единственият изход за отстраняване на грешки, който имам, са два низа за сравнение, по-добре да помоля за помощ!
Ето страната на кодовия сървър:
app.use([
cookieParser(process.env.SESSION_SECRET),
session({
resave: false,
saveUninitialized: true,
secret: process.env.SESSION_SECRET,
store: new MongoStore({ url: MONGO_URL, autoReconnect: true }),
cookie: {
secure: process.env.NODE_ENV === 'production'
},
}), lusca({
csrf: true,
xframe: 'SAMEORIGIN',
xssProtection: true,
})]);
И от страна на клиента изпращам Ajax POST
заявки със заглавката x-csrf-token:l0gH3xmssge53E/p2NsJ4dGnHaSLdPeZ+bEWs=
в тях:
fetch(url, {
method: 'POST',
credentials: 'include',
headers: {
'x-csrf-token': CSRF_TOKEN
}
});
Странното е, че работи локално, но веднага щом отида https
в production
, получавам съобщение за грешка 403 Forbidden
.
Ето версиите, които използвам:
"cookie-parser": "1.4.3",
"express-session": "1.15.3",
"lusca": "1.5.1",
Също така прочетох това от express/session doc:
Забележка От версия 1.5.0 вече не е необходимо да се използва междинният софтуер за анализатор на бисквитки, за да работи този модул.
Но що се отнася до мен, трябва да съхраня някакъв постоянен идентификатор на потребителите (по-дълъг от сесията). Трябва да използвам бисквитки за това, нали?
Бих искал да разбера по-добре цялата работа със сесията/бисквитките, но досега не намерих никакъв полезен ресурс по темата.
Благодаря!