Я использую одностраничное приложение React в качестве клиентской стороны или создаю приложение React (CRA).
В своем бэкэнде я использую Node.js & Express.
, чтобы получить данные или сохранить их.нужно вызвать API от клиента до бэкэнда.
на самом деле я видел несколько промежуточных программ, таких как: - Express CSURF
, но, если честно, я не понимаю, как отправлять токен CSRF клиенту при каждом запросе.Я пытался несколько раз, вставив CSRF в cookie, а затем приняв его на стороне клиента.но когда сохраняется первый запрос или новый файл cookie, я получаю сообщение об ошибке Invalid CSRF Token
.
, и даже если я сделал это:
app.use(session({
genid: function (req) {
return uuidv4() // use UUIDs for session IDs
},
name:keys.session.name,
secret: keys.session.secret,
resave: false,
saveUninitialized: true,
rolling:true,
cookie: {
secure: false,
httpOnly: true,
maxAge:keys.session.maxAge, // satu hari,
sameSite:true,
}
}));
app.use(passport.session());
app.use(cookieParser());
app.use(csrf({ cookie: false }));
app.use((req,res,next)=>{
res.cookie('CSRF_token', req.csrfToken(), { sameSite: true });
})
Это означает, что файл cookie CSRF_token будет изменять каждый запрос.но я установил его только один раз так: axios.defaults.headers.common['csrf-token'] = csrf;
и результаты все еще работают, что не должно работать.
Так мне нужен CSRF?или как правильно настроить на реагирующий SPA.