Лучший способ избежать ошибки HTTP 403 при получении заголовка Set-Cookie для установки файла cookie CSRF

1

Я называю REST API, который имеет CSRF-защиту.

Все работает хорошо. Я получаю токен и отправляю его обратно на сервер.

Однако, когда я делаю первый запрос или когда CSRF Cookie не установлен в браузере, он всегда выдает ошибку HTTP 403.

Это связано с тем, что я не отправил токен CSRF учитывая, что это самый первый запрос, в котором сервер отправляет заголовок Set-Cookie для установки CSRF Cookie.

Каким будет лучший способ избежать этой ошибки при первом обращении к API-интерфейсу, защищенному CSRF?

Должен ли я проверять каждый раз, если CSRF Cookie установлен в браузере перед отправкой любого запроса?

  • 0
    Вы можете создать пользовательскую конечную точку, например, / api? Request = token, которая не защищена CSRF и возвращает только токен. На самом деле зависит, как ваш API запрограммирован.
  • 0
    Означает ли это, что мне придется каждый раз проверять, есть ли у меня файл cookie, чтобы отправить этот запрос?
Теги:
cookies
fetch-api

1 ответ

1
Лучший ответ

Вы можете сделать что-то подобное. Это фиктивный сценарий.

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);
    }
  });
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню