NuevoBlack Friday: 50 % de descuento en tu primer pago
Solución de problemas de WordPress

La API de REST encontró un error

Algo respondió la solicitud que no era WordPress, o contestó con HTML. El editor deja de funcionar primero, porque depende de la API para todo.

The REST API encountered an error: The REST API request failed due to an error.

Respuesta breve

Solicitar una ruta REST directamente y ver lo que regresa. JSON significa que la API está viva y el problema es la autenticación; una página de error HTML significa algo delante de WordPress interceptó la ruta antes de que PHP respondiera.

Diagnóstico

Las causas más probables primero.

Revisa la lista en orden. Cada comprobación permite confirmar o descartar una causa antes de hacer cambios: las soluciones son distintas y adivinar cuesta más que ejecutar un comando.

CausaCómo comprobarloSolución
Un plugin de seguridad o WAF bloquea la rutaLa solicitud devuelve HTML o un 403 de algo que no es WordPress, y el bloque se ha registrado por el plugin o cortafuegos en lugar de por WordPress.Permitir /wp-json/ para usuarios autenticados. Reglas escritas para detener la enumeración del usuario frecuentemente bloquean todo el espacio de nombres en lugar del punto final al que estaban dirigidos.
Permalinks están rotos así que la ruta nunca resuelveLa ruta bonita 404s mientras que la forma de búsqueda responde correctamente. Esa diferencia lo aísla para reescribir reglas.La ruta REST es una reescritura como cualquier otra, por lo que desaparece cuando están estancadas.
El encabezado de Autorización está despojadoLas rutas no autenticadas funcionan y las autenticadas informan que no se ha iniciado sesión, aunque lo estés.Pase el encabezado de Autorización a PHP en el servidor web. Las configuraciones de estilo CGI lo dejan por defecto, y las contraseñas de aplicaciones dejan de funcionar completamente cuando lo hacen.
Un plugin emite salida antes de JSONLa respuesta es válida JSON con algo delante de ella —un aviso, una línea en blanco estrado— que lo hace inparable.Encontrar el plugin de impresión temprano. La misma salida de la calle generalmente también rompe los alimentos y produce una advertencia de la cabeza-ya-enviada en otro lugar.
Guía

Solución paso a paso.

Los comandos requieren WP-CLI y acceso a la consola. Si no los tienes, cada paso explica cómo hacer lo mismo desde el panel o por SFTP.

  1. Pregunte a la API para el índice

    Esta ruta no requiere autenticación, así que cualquier otra cosa que JSON sea la respuesta.

    curl -sS -i https://example.com/wp-json/ | head -n 20
  2. Comparen la routing bonita y simple

    Si el segundo funciona y el primero no, reescribir reglas es el problema y nada más necesita pruebas.

    curl -sS -o /dev/null -w '%{http_code}\n' 'https://example.com/wp-json/wp/v2/types'
    curl -sS -o /dev/null -w '%{http_code}\n' 'https://example.com/?rest_route=/wp/v2/types'
  3. Recompilar las reglas de reescritura

    Barato, seguro y arregla una parte sorprendente de estos.

    wp rewrite flush --hard
  4. Confirme que el encabezado de Autorización sobrevive

    Añadir esto al servidor web o .htaccess cuando las rutas autenticadas son las únicas que fallan.

    # .htaccess
    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
    
    # nginx + fastcgi
    fastcgi_param HTTP_AUTHORIZATION $http_authorization;
  5. plugins de insectos si todavía está fallando

    Prueba la ruta entre cada desactivación en lugar de al final, por lo que el plugin que lo arregla es inequívoco.

    wp plugin deactivate --all
    curl -sS -o /dev/null -w '%{http_code}\n' https://example.com/wp-json/
En MagicWP

De esto se encarga la plataforma.

Nada se encuentra entre la solicitud y WordPress que reescribe o inspecciona /wp-json/, por lo que la ruta llega a PHP intacto y el encabezado llega con ella — las dos causas que cuenta la mayoría de estas. reglas Permalink son parte de la configuración propia del sitio en lugar de un archivo compartido otros sitios también editar, por lo que no van a parar cuando algo no relacionado se implementa.

Preguntas frecuentes

Preguntas frecuentes.

¿Puedo desactivar la API REST?
No realmente. El editor de bloques, Site Health, contraseñas de aplicaciones y gran parte de wp-admin se construyen en él, así que desactivar el administrador en lugar de asegurarlo. Restringir rutas específicas a los usuarios autenticados es la versión razonable de esa idea.
El editor dice “Updating failed” — ¿es ese el mismo problema?
Normalmente sí. El editor guarda a través de la API REST, por lo que una respuesta bloqueada o malformada superficies allí primero, y los cheques de esta página son los correctos para ejecutar.
¿Por qué funciona cuando estoy conectado pero no me he conectado?
Eso apunta al encabezado de Autorización o la cookie no más que a la deriva. Las rutas no autenticadas nunca necesitan, por lo que siguen trabajando.
¿Es un 404 en /wp-json / diferente de un 403?
Sí, y útilmente así. Un 404 significa que la ruta no fue encontrada, que es reglas de reescritura. Un 403 significa algo encontrado y rechazado, que es una regla de seguridad.