Совместимость WP REST API и LiteSpeed

Вопрос или проблема

Я попробовал все, что мог придумать, и искал в Интернете последние несколько дней, потратив ~10 часов в день на попытки диагностировать это.

Проблема:

  1. в WP Site Health я получаю:

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

При тестировании REST API был возвращён неожиданный результат:

REST API Endpoint: https://www.mydomain.gr/wp-json/wp/v2/types/post?context=edit
Ответ REST API: (400) Неверный запрос

  1. При попытке сохранить файл из редактора плагинов я получаю (да, права на файл установлены правильно. даже пробовал 777):

Не удалось установить связь с сайтом для проверки на фатальные ошибки, поэтому изменение PHP было отменено. Вам потребуется загружать изменения вашего PHP файла другими способами, например, используя SFTP.

  1. Плагины не взаимодействуют с сервером для проверки обновлений.

Журналы:
из error_log litespeed есть запись каждый раз, когда я пытаюсь записать .php файл из редактора файлов или пытаюсь проверить состояние сайта, которая показывает:

2024-03-15 09:45:58.850109 [INFO] [2276963] [T0] [23.88.68.54:35334] Статус 400: Неверный символ в имени заголовка: ‘],”is_nat”‘

Попробованные решения:

  1. играл с настройками litespeed.
  2. отключил все плагины/переключился на стандартную тему.
  3. проверил с помощью стандартного файла .htaccess WP
  4. Написал небольшой PHP скрипт для взаимодействия с wc-api, который работает ПЕРФЕКТНО (говоря о странностях???).
  5. переустановил WP v6.4.3.

Я не могу понять, что может быть не так.

Это предупреждение о состоянии сайта, связанное с тем, что REST API возвращает неожиданный результат (тот же конечный пункт и статус 400), внезапно начало возникать и у меня. Это произошло на всех моих песочницах WordPress на сервере LiteSpeed, даже без установленных плагинов.

PHP журнал ошибок, который вы предоставили, был недостающим кусочком пазла для меня.

В моем случае проблема связана с куки mp_*_mixpanel, который был сохранен в браузере. Этот куки содержал часть "is_nat":0, которая также упоминается в вашем журнале ошибок, и как только я удалил куки; это решило проблему для меня. Похоже, что LiteSpeed пытается разобрать это как HTTP заголовок, когда WordPress делает запрос к REST API.

Надеюсь, этот ответ поможет кому-то, кто сталкивается с той же проблемой.

Ответ или решение

Неполадки между WP REST API и LiteSpeed: Полное руководство по диагностике и решению

В последнее время множество пользователей, работающих с WordPress на серверах LiteSpeed, сталкиваются с несовместимостью между WP REST API и настройками LiteSpeed. Эти проблемы могут проявляться в различных формах, от ошибок в Site Health до невозможности обновления плагинов. В данной статье мы рассмотрим причины, по которым возникает эта несовместимость, а также предложим надежные методы диагностики и решения проблем.

Проблема: Ошибка 400 при использовании REST API

Согласно приведенному вами описанию, ошибка проявляется следующим образом:

  • Тестирование REST API в Site Health выдает статус 400: "Bad Request" при обращении к конкретному эндпоинту wp-json/wp/v2/types/post?context=edit.
  • Ошибка в логах LiteSpeed указывает на проблему с недопустимыми символами в заголовке: Invalid character in header name: '],"is_nat"'.

Эта конкретная ошибка могла возникнуть из-за некорректной обработки заголовков HTTP со стороны LiteSpeed.

Потенциальные причины проблемы

  1. Проблемы с cookie: Как показывает ваш опыт, причиной может быть наличие специфических cookie (например, mp_*_mixpanel), которые LiteSpeed пытается обработать как HTTP-заголовки, что и приводит к ошибке.

  2. Неправильные заголовки HTTP: Проверка и правильная настройка заголовков, которые отправляются вашим WordPress-сайтом, может устранить конфликты.

  3. Ошибки в конфигурации LiteSpeed: Неправильно настроенные модули или параметры могут блокировать корректное выполнение запросов к REST API.

  4. Специфические плагины или темы: Иногда конфликты могут возникать из-за определенных плагинов или тем, даже если они отключены.

Решения и шаги по диагностике

Чтобы решить проблемы, подобные тем, что вы описали, выполните следующие шаги:

  1. Очистка cookie: Удалите все cookie, относящиеся к вашему сайту, особенно те, что могут быть связаны с сторонними аналитическими инструментами. Это может мгновенно устранить многие проблемы с REST API.

  2. Проверка заголовков: Используйте инструменты разработчика в браузере, чтобы посмотреть, какие заголовки отправляются, и убедитесь, что все они корректны. Замените или удалите проблемные заголовки.

  3. Обновление конфигурации LiteSpeed:

    • Проверьте настройки кэширования и отключите дополнительные модули, если они не нужны.
    • Обратите внимание на правила обработки запросов и ограничения, установленные конфигурацией сервера.
  4. Логирование ошибок: Убедитесь, что ошибки PHP, связанные с вашим сайтом, полностью зарегистрированы. Это поможет вам получить более подробную информацию о том, что идет не так.

  5. Тестирование в чистом окружении: Если вы еще не сделали этого, создайте временный экземпляр сайта с установленной только чистой версией WordPress без плагинов и тем, чтобы проверить, проявляются ли аналогичные проблемы.

  6. Связь с поддержкой: Если проблема не решена, рекомендуется обратиться в службу поддержки LiteSpeed или WordPress, предоставив им все имеющиеся логи и описание проблемы.

Заключение

Несовместимость между WP REST API и LiteSpeed — это проблема, которая может сильно воздействовать на функциональность вашего сайта. Правильная диагностика и решение могут значительно улучшить производительность вашего WordPress-сайта. Сфокусируйтесь на очистке cookie, проверке HTTP-заголовков и настройках сервера, чтобы устранить подобные проблемы. Удачи вам в решении этой задачи!

Оцените материал
Добавить комментарий

Капча загружается...