Что означает HTTP статус-код 403?

«Что означает HTTP статус-код 403?» — вопрос из категории HTTP и веб-протоколы, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

HTTP статус-код 403 Forbidden означает, что сервер понял запрос, но отказывается его авторизовать. В отличие от кода 401 Unauthorized, который требует аутентификации, здесь доступ запрещен навсегда для текущего контекста — даже при успешном входе в систему.

Ключевое отличие:

  • 401 Unauthorized: "Я не знаю, кто ты. Представься."
  • 403 Forbidden: "Я знаю, кто ты, но у тебя нет прав на это действие."

Типичные причины:

  1. Недостаточные права пользователя: Попытка доступа обычного пользователя к админ-панели (GET /admin/dashboard).
  2. Запрет на уровне файловой системы: Веб-сервер (например, nginx, Apache) настроен блокировать доступ к определенным файлам (.htaccess, .env) или директориям.
  3. IP-бан: IP-адрес клиента внесен в черный список.
  4. Запрет по геолокации: Доступ к контенту ограничен для определенных регионов.
  5. Отказ в доступе к API: У API-ключа нет необходимых scope или прав.

Пример ответа сервера:

HTTP/1.1 403 Forbidden
Content-Type: application/json

{
  "error": "Forbidden",
  "message": "You do not have permission to access this resource."
}

Что делать при получении 403:

  1. Проверить, авторизован ли пользователь.
  2. Убедиться, что учетная запись имеет необходимые роли/разрешения (RBAC).
  3. Проверить конфигурацию сервера и правила брандмауэра (WAF).
  4. Для API — проверить scope токена доступа (OAuth 2.0).