WordPress WordPress 6.xLinuxPHP-FPM / PHP

WordPress: REST API отвечает 401 при сохранении записи в редакторе

  • Обновлено
  • Чтение ≈ 4 минуты

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

Нельзя автоматически считать 401 неисправностью REST API WordPress: его может вернуть защитный прокси, правило доступа, внешняя авторизация либо сам WordPress при отсутствии корректной авторизации. Сохраните черновик локально перед повторными попытками.

В этой статье
  1. Суть неисправности и признаки
  2. Почему возникает проблема
  3. Пошаговая диагностика и устранение
  4. Как проверить результат и что делать, если не помогло

#Суть неисправности и признаки

В редакторе блоков WordPress текст набран, но нажатие «Сохранить» или «Опубликовать» заканчивается ошибкой запроса к /wp-json/wp/v2/posts/... с HTTP 401. При этом обычная публичная страница может открываться. Код 401 означает, что сервер не признал запрос авторизованным, но источник ответа нужно определить по содержимому и заголовкам. Нельзя автоматически считать 401 неисправностью REST API WordPress: его может вернуть защитный прокси, правило доступа, внешняя авторизация либо сам WordPress при отсутствии корректной авторизации. Сохраните черновик локально перед повторными попытками.

#Почему возникает проблема

Возможная причинаКак узнатьЧто делать
Истёк сеанс или отсутствует служебный токен RESTРедактор использует cookie входа и X-WP-Nonce. После долгого простоя токен или сеанс становятся неактуальными.Повторный вход на том же домене помогает; в ответе JSON ошибка rest_not_logged_in или иной код авторизации.Проверить адрес входа, войти заново, создать новую вкладку редактора.
Запрос перехватывает WAF, CDN или базовая HTTP-авторизацияСетевой фильтр может требовать отдельную авторизацию или блокировать POST на /wp-json/.Вместо JSON приходит HTML с формой входа, страница 401 от прокси или заголовок WWW-Authenticate.Определить уровень блокировки по вкладке «Сеть» и журналам.
Cookie принадлежат другому домену или протоколуwww и без www, http и https или перенаправление между доменами меняют контекст авторизации.Админка открыта на одном имени, а REST запрос уходит на другое.Сверить адрес WordPress и адрес сайта, правила прокси.
Конфликт дополнения авторизацииПосле обновления появился фильтр REST API или запрет для ролей пользователей.На тестовой копии проблема исчезает после отключения конкретного расширения.Проверить дополнения по одному на тестовой копии.

#Пошаговая диагностика и устранение

  1. Сохраните текст до диагностикиЕсли кнопка сохранения не работает, выделите содержимое записи в редакторе и скопируйте в локальный текстовый документ; для блоков со сложной вёрсткой дополнительно используйте меню редактора с режимом копирования блоков. Не закрывайте текущую вкладку, пока не сохранили текст. Зафиксируйте время сбоя, адрес записи и дословное сообщение. Это предотвращает потерю изменений при повторной авторизации.
  2. Определите, какой запрос получает 401В браузере Chrome/Edge откройте редактор и нажмите F12 → «Сеть» (Network). Включите сохранение журнала (Preserve log) при необходимости, повторите «Сохранить» и выберите красную строку с /wp-json/ или ?rest_route=. Посмотрите «Заголовки» → Request URL, Status Code и «Ответ». Запишите код ошибки внутри JSON, но не копируйте в отчёт cookie, X-WP-Nonce, Authorization. Если 401 относится к другой службе, исследуйте именно её, а не настройки REST.
  3. Проверьте обычную работу REST без авторизацииВ новой вкладке того же браузера откройте https://ВАШ-ДОМЕН/wp-json/ (замените домен своим). Должен появиться JSON со сведениями о доступных маршрутах; это не проверка прав на редактирование. Если вместо него 401, 403, перенаправление на форму входа или HTML, сфотографируйте ответ и сначала проверьте фильтр запросов и настройки сервера. Не публикуйте доступ к закрытым маршрутам ради теста.
  4. Обновите сеанс безопасноВ отдельной вкладке перейдите по правильному адресу /wp-admin/, проверьте имя пользователя в верхнем меню, при необходимости выполните выход и вход. Вернитесь в редактор, обновите его страницу только после сохранения текста из первого шага. Создайте короткий тестовый черновик и сохраните его: если сохранился, причина была временной авторизацией; если 401 повторился, продолжайте диагностику.
  5. Сверьте домен и HTTPSВ админке откройте «Настройки» → «Общие» и посмотрите «Адрес WordPress (URL)» и «Адрес сайта (URL)». Сравните их со строкой браузера и Request URL из шага 2: проверьте www, протокол HTTPS и нестандартный каталог установки. При несовпадении не меняйте адреса наугад: сначала сохраните значения и проверьте схему перенаправлений и доверие к обратному прокси; некорректная правка может закрыть доступ в админку.
  6. Проверьте права пользователя и защитные дополненияОткройте «Пользователи» → «Все пользователи» и убедитесь, что у вашей учётной записи есть роль, позволяющая редактировать именно эту запись. На тестовой копии сайта, после резервной копии, по одному проверяйте недавно обновлённые плагины авторизации, безопасности и REST, фиксируя результат каждого включения. На рабочем сайте не отключайте защиту целиком: просите администратора проверить соответствующее правило только для конкретного запроса.
  7. Сопоставьте ответ с журналамиВ панели хостинга найдите журналы доступа и ошибок нужного сайта. По времени сбоя отыщите POST к /wp-json/wp/v2/posts/... и его HTTP-код; при прокси/WAF дополнительно изучите идентификатор правила в его журнале. Если журнал Nginx показывает 401, а PHP до запроса не дошёл, исправлять WordPress-плагины бессмысленно. Если WordPress вернул JSON с сообщением о правах, проверьте роль и серверные cookie.
  8. Повторите сохранение и зафиксируйте исправлениеПосле одного точечного исправления откройте редактор в обычной авторизованной вкладке, измените тестовый черновик, нажмите «Сохранить» и обновите страницу. Убедитесь, что изменение сохранилось и POST завершился кодом 200/201, а не 401. Если ошибка повторяется, верните прежние настройки, сохраните обезличенные журналы и точный код из JSON для поддержки хостинга или разработчика расширения.
  9. Дополнительная команда по теме
    Linux · Терминал (Bash)Команда
    В терминале Linux/Mac либо PowerShell с curl проверьте только заголовки публичного REST-адреса, заменив example.com на свой домен. Не добавляйте cookie или пароли. HTTP 200/301/401 сам по себе ещё не доказывает проблему с сохранением записи; сравните с браузером.
    curl -I https://example.com/wp-json/

#Как проверить результат и что делать, если не помогло

Успех означает, что после обновления вкладки тестовый черновик содержит новый текст и запрос сохранения больше не отвечает 401. Если в сетевом журнале есть rest_cookie_invalid_nonce с HTTP 403, это отдельный вариант сбоя служебного токена; не называйте его ошибкой 401. Передайте специалисту URL маршрута без параметров авторизации, время и тело ответа без секретов.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 2 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.