Решение ошибки WP REST API 401 Unauthorized в WordPress

Ошибка 401 Unauthorized при работе с WP REST API — частая проблема, с которой сталкиваются разработчики и владельцы сайтов на WordPress. Она возникает, когда запросы к API не проходят авторизацию, и сервер отказывает в доступе. В этой статье подробно разберём причины появления ошибки, методы её устранения и приведём практические примеры с кодом.

Что такое ошибка 401 Unauthorized в WP REST API

Статус 401 Unauthorized означает, что клиентский запрос не содержит правильных учетных данных для доступа к защищённому ресурсу. В контексте WordPress REST API это значит, что запрос не авторизован или авторизация выполнена некорректно.

WP REST API используется для взаимодействия с сайтом программно — например, через внешние приложения, мобильные клиенты или AJAX-запросы. Часто API требует проверки прав пользователя — и без корректной аутентификации вы получите 401 ошибку.

Основные причины возникновения 401 Unauthorized в WP REST API

  • Отсутствие или некорректные заголовки авторизации. Запрос не содержит нужных токенов или куки сессии.
  • Неправильная настройка плагинов безопасности. Некоторые плагины блокируют REST API по умолчанию или ограничивают доступ.
  • Использование неверного способа аутентификации. Например, попытка вызвать защищённый эндпоинт без OAuth, JWT или куки авторизации.
  • Конфликты с плагинами, изменяющими REST API. Некоторые плагины могут изменять разрешения или фильтры, вызывая ошибку.
  • Отсутствие поддержки CORS при запросах с другого домена. Браузер блокирует запросы без нужных заголовков.

Как исправить ошибку 401 Unauthorized в WP REST API

1. Проверка и правильная настройка аутентификации

WP REST API поддерживает несколько способов аутентификации:

  • Куки авторизация: для запросов из браузера, когда пользователь залогинен.
  • Basic Auth: простой способ с передачей логина и пароля в заголовке (не рекомендуется для продакшена без HTTPS).
  • OAuth 1.0a: безопасный, но сложный метод.
  • JWT (JSON Web Token): современный и удобный способ токен-авторизации.

Для разработки и отладки удобно использовать плагин WP REST API Authentication или JWT Authentication for WP REST API с WPGPT для упрощения работы с токенами.

2. Пример настройки JWT аутентификации

Установите и активируйте плагин JWT Authentication for WP REST API. Затем добавьте в файл .htaccess или конфигурацию сервера следующее:

SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

В wp-config.php добавьте секретный ключ:

define('JWT_AUTH_SECRET_KEY', 'ваш_сложный_секретный_ключ');

Теперь можно получить токен с помощью POST-запроса:

POST /wp-json/jwt-auth/v1/token
Content-Type: application/json

{
  "username": "ваш_логин",
  "password": "ваш_пароль"
}

В ответ получите JSON с токеном, который нужно передавать в заголовке Authorization: Bearer ваш_токен.

3. Отключение блокирующих плагинов и проверка разрешений REST API

Чтобы убедиться, что проблема не в плагинах, временно отключите все плагины безопасности, кеширования и оптимизации, которые могут ограничивать REST API. Также проверьте, не блокирует ли сервер .htaccess или firewall доступ.

Для проверки доступности REST API используйте URL https://ваш_сайт/wp-json/. Если он возвращает корректный JSON, API работает.

4. Использование пользовательских функций для отладки REST API и авторизации

Добавьте в functions.php вашей темы следующий код, чтобы логировать попытки авторизации и видеть, кто и как обращается к API:

function wperror_log_rest_auth_errors( $result, $server, $request ) {
    if ( is_wp_error( $result ) ) {
        error_log( 'REST API auth error: ' . $result->get_error_message() );
    }
    return $result;
}
add_filter( 'rest_authentication_errors', 'wperror_log_rest_auth_errors', 10, 3 );

Это поможет отследить конкретные ошибки авторизации.

Дополнительные советы по работе с WP REST API и предотвращению ошибок 401

Настройка CORS для запросов с других доменов

Если вы делаете запросы с другого домена, браузер может блокировать их из-за политики CORS. В functions.php добавьте:

function wperror_add_cors_headers() {
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE');
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Allow-Headers: Authorization, Content-Type');
}
add_action( 'rest_api_init', function() {
    remove_filter( 'rest_pre_serve_request', 'rest_send_cors_headers' );
    add_filter( 'rest_pre_serve_request', function( $value ) {
        wperror_add_cors_headers();
        return $value;
    });
}, 15 );

Это позволит браузеру корректно отправлять авторизационные заголовки.

Использование плагина Clearfy Pro для управления REST API

Плагин Clearfy Pro предоставляет удобный интерфейс отключения REST API для неавторизованных пользователей или ограничения доступа для разных ролей, что помогает избежать ошибок 401 при неправильных настройках.

Заключение

Ошибка 401 Unauthorized в WP REST API — это сигнал, что запрос не прошёл авторизацию. Чаще всего причина в неправильной аутентификации, блокировках плагинов или настройках сервера. Используйте современные методы авторизации, например JWT, проверяйте конфликты плагинов и корректно настраивайте CORS. Логирование ошибок поможет найти точную причину.

Если вы хотите упростить работу с WP REST API и автоматизировать многие задачи, рекомендую ознакомиться с продуктами из WPShop, включая WPGPT и Clearfy Pro.

Решение ошибки "WP Content Folder Not Writable" в WordPress
28.03.2026
Решение ошибки PHP Fatal error: Allowed memory size exhausted в WordPress
31.03.2026
Как исправить неработающий параметр Sold Individually в WooCommerce
17.05.2026
Решение ошибки 404 на страницах WordPress
12.12.2025
WooCommerce: как исправить проблему с автоматическим удалением товаров из корзины
01.06.2026