Я называю REST API, который имеет CSRF-защиту.
Все работает хорошо. Я получаю токен и отправляю его обратно на сервер.
Однако, когда я делаю первый запрос или когда CSRF Cookie не установлен в браузере, он всегда выдает ошибку HTTP 403
.
Это связано с тем, что я не отправил токен CSRF
учитывая, что это самый первый запрос, в котором сервер отправляет заголовок Set-Cookie
для установки CSRF Cookie.
Каким будет лучший способ избежать этой ошибки при первом обращении к API-интерфейсу, защищенному CSRF?
Должен ли я проверять каждый раз, если CSRF
Cookie установлен в браузере перед отправкой любого запроса?
Вы можете сделать что-то подобное. Это фиктивный сценарий.
checkIfAuthenticated()
.then( token => {
// user is authorized. use token
})
.catch( err => {
// oops. not authorized probably. authenticate user here.
});
// and your checkifAuthenticated:
function checkifAuthenticated() {
return new Promise((resovle, reject) => {
// perform a http request here to /api?checkauth
if(api_returned_401) {
reject('not authenticated');
} else {
resolve(tokenOrInfo);
}
});
}