Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: refresh token, access token, authentication, security, JWT

Почему refresh token не стоит отправлять с каждым запросом?

Вопрос проверяет понимание безопасности и архитектуры аутентификации, а именно различие между access и refresh токенами и их правильное использование.

Короткий ответ

Refresh token предназначен для получения нового access token, а не для аутентификации каждого запроса. Отправка refresh token с каждым запросом увеличивает риск его перехвата и компрометации учетной записи. Access token, напротив, имеет короткий срок жизни и используется для каждого запроса, что минимизирует последствия утечки. Refresh token хранится в безопасном месте (например, httpOnly cookie) и передается только при обновлении токена.

Длинный ответ

Разделение ответственности токенов

В современных системах аутентификации используются два типа токенов: access token и refresh token. Access token — это короткоживущий токен (обычно 15-30 минут), который отправляется с каждым запросом к защищенным ресурсам. Refresh token — это долгоживущий токен (дни или недели), который используется только для получения нового access token, когда старый истекает.

Почему не стоит отправлять refresh token с каждым запросом

  • Безопасность: Если refresh token будет перехвачен злоумышленником, он сможет получать новые access token неограниченное время, пока refresh token не будет отозван. Отправка его с каждым запросом многократно увеличивает поверхность атаки.
  • Производительность: Проверка refresh token требует дополнительных ресурсов (например, запрос к базе данных или проверка в хранилище), что замедляет обработку каждого запроса.
  • Архитектурная чистота: Access token должен быть самодостаточным (например, JWT с подписью), чтобы сервер мог проверить его без обращения к базе данных. Refresh token же требует проверки на стороне сервера, что делает его непригодным для частой отправки.

Практический пример

// Клиент отправляет access token с каждым запросом
fetch('/api/data', {
  headers: {
    'Authorization': 'Bearer ' + accessToken
  }
});

// Только при истечении access token клиент использует refresh token
async function refreshAccessToken() {
  const response = await fetch('/api/auth/refresh', {
    method: 'POST',
    credentials: 'include', // httpOnly cookie с refresh token
  });
  const data = await response.json();
  accessToken = data.accessToken;
}

Вывод

Refresh token следует использовать только для обновления access token, а не для аутентификации каждого запроса. Это повышает безопасность, снижает нагрузку на сервер и соответствует лучшим практикам проектирования систем аутентификации.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

  • Node.js

    Node.js

Ключевые слова

#refresh token

#access token

#authentication

#security

#JWT

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию