index.js
// Middleware
app.use(express.json())
app.use(cookieParser())
app.use(cors({
origin: 'http://localhost:8081',
credentials: true,
methods: ['GET', 'POST', 'PUT', 'DELETE']
}))
app.use(csrf({cookie: {httpOnly: true} }))
app.use(helmet.frameguard({ action: 'SAMEORIGIN' }))
app.use(safetyMiddleware)
app.use('/api', router)
// Возможные ошибки с IOS
app.use(errorMiddleware)
safety-middleware
module.exports = function (req, res, next) {
res.set("Content-Security-Policy", "default-src 'self'")
res.set("X-XSS-Protection", "1; mode=block")
res.set("X-Content-Type-Options", "nosniff")
// res.set("XSRF-Token", req.csrfToken())
next()
}
Как только с index.js убираю csrf сервер вновь работает, но функция req.csrfToken() перестаёт быть доступной.
Нашёл способ в интернете. Отправлять токен в шапке запроса + вшивать его в payload jwt. На фронте добавлять в localStorage и помещать его в шапку перед каждым запросом на сервер.
Опыта в подобной разработке не имею, отсюда несколько вопросов.
1. Насколько корректен указанный подход?
2. Почему сервер выдаёт 500 статус?
Спасибо за ответ.