Falta o no es válida la cabecera de autorización ¿qué significa? ¿cómo se soluciona?

Quizás en alguna instalación de WordPress te haya sorprendido que la herramienta de salud del sitio te indica que tu web necesita mejoras debido a que falta la cabecera de autorización o a que la cabecera de autorización no es válida.

¿A qué es debido este aviso?¿por qué es un problema de salud del sitio? ¿es un problema de seguridad? ¿tiene solución?

¿Qué es la cabecera de autorización?

Cuando accedes a la herramienta de salud del sitio de WordPress y despliegas la advertencia de mejora, verás que te indica el detalle del problema.

Por ejemplo:

Los problemas pueden ser 2:

  • Falta la cabecera de autorización.
  • La cabecera de autorización no es válida.

Además, en la descripción te indicará que la cabecera de autorización proviene de las aplicaciones de terceros que apruebes, y que sin ella estas aplicaciones no pueden conectar con tu sitio, sea lo que sea que signifique eso.

Y te ofrece un enlace para «purgar los enlaces permanentes» que te lleva directamente a los ajustes de enlaces permanentes de la administración de tu WordPress.

Bien, pues todo esto es debido a que WordPress ha detectado que alguna aplicación de terceros, o sea, algún plugin o tema, ha tratado de conectarse mediante la REST API y no ha podido debido a que falta o no es válida la llamada cabecera de autorización.

Esto puede pasar a partir de la versión 5.6 de WordPress, que es cuando se introdujeron las contraseñas de aplicación y, lo más habitual es que sea debido a que las reglas de enlaces permanentes de tu sitio no estén actualizadas o no estén correctas, e impidan que se realice la autorización.

¿Es un problema de seguridad?

Aunque cuando la prueba es correcta aparecer en la sección de seguridad, en realidad no, es un problema de funcionamiento, que impedirá que funcione alguna característica de alguno de tus plugins o tema.

Cómo solucionar problemas con la cabecera de autorización de WordPress

Bueno, dicho lo anterior, lo más normal es que sea debido a que, efectivamente, falta la cabecera de autorización, o que no está bien definida, así que vamos a ver las soluciones.

Actualiza temas y plugins

Hay veces en que simplemente es que algún plugin o tema no estaba realizando bien la conexión, así que una comprobación que no te costará nada, antes de meternos en añadir cabeceras que faltan o modificar cabeceras, es tener tu WordPress actualizado y al día.

Es una prueba tan sencilla como actualizar todos los plugins y temas que tengas instalados.

Una vez hecho esto pásate por la herramienta de salud del sitio para comprobar si persiste el problema con la cabecera de autorización o no.

Purga los enlaces permanentes

Pues sí, otra solución es hacer caso a la pantalla de información de la herramienta de salud del sitio y purgar los enlaces permanentes.

¿Que cómo se hace eso? Muy sencillo, simplemente guarda cambios como si hubieses modificado algo en los ajustes, pero sin modificar nada en los ajustes.

Ve a la administración de tu WordPress, en concreto a Ajustes → Enlaces permanentes, y dale clic al botón de «Guardar ajustes»

A continuación pásate, lógicamente, por la salud del sitio y revisa a ver si se solucionó la advertencia.

Modifica manualmente las reglas de enlaces permanentes

Si lo prefieres, puedes actualizar manualmente el archivo .htaccess que, históricamente, solía ser algo así:

# BEGIN WordPress

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

# END WordPress

Y digo «históricamente» porque desde WordPress 5.6 ya no es así, y deberías cambiarlo.

Puedes hacer una de estas 2 cosas:

  1. Añadir manualmente esta línea antes de la primera RewriteRule:
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
  2. Sustituir las reglas existentes al completo por estas (nuevas):
    # BEGIN WordPress
    # Las directivas (líneas) entre «BEGIN WordPress» y «END WordPress» son
    # generadas dinámicamente y solo deberían ser modificadas mediante filtros de WordPress.
    # Cualquier cambio en las directivas que hay entre esos marcadores serán sobrescritas.
    RewriteEngine On
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
    RewriteBase /
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
    
    # END WordPress

Verás que el resultado es el mismo, simplemente añades la regla de rewrite de la cabecera de autorización, justo de lo que nos estaba avisando la herramienta de salud del sitio con su advertencia de que faltaba o no era válida.

Esta nueva línea del archivo .htaccess se añadió a partir de WordPress 5.6, precisamente por lo que te comenté al principio.

Esta línea ayuda a gestionar la cabecera de autorización para las solicitudes HTTP procedentes de cualquier aplicación de terceros aprobada. Sin una gestión adecuada de la cabecera de autorización las aplicaciones no podrán conectarse a tu sitio.

Así que, los sitios que utilizan reglas de enlaces permanentes obsoletas, no tendrán la nueva línea en el archivo .htaccess. Esto provoca errores cuando WordPress intenta procesar las peticiones.

El error de salud del sitio ocurre porque WordPress espera ciertas cabeceras de autorización que no están incluidas en la solicitud.

Activa manualmente la cabecera de autorización

Un método para solucionar el aviso de la cabecera de autorización, alternativo a los anteriores, que solo debes probar si no te funcionan los que ya hemos visto anteriormente, es activar manualmente la cabecera de autorización.

En un servidor Apache tendrías que añadir lo siguiente al archivo .htaccess:

<IfModule mod_setenvif>
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
</IfModule>

En un servidor Nginx deberías añadir esto a la configuración de FastCGI:

fastcgi_pass_header Authorization;

¿Funciona?

Pues claro, salvo que me digas lo contrario en los comentarios, normalmente con la solución sencilla, la de purgar los enlaces permanentes, se arregla el problema, porque WordPress sustituye las reglas anticuadas del archivo .htaccess por las nuevas, añadiendo ya la cabecera de autorización correcta.

O si, por algún motivo, prefieres hacerlo manualmente, también funcionan los otros métodos. Lo he probado en decenas de instalaciones con este aviso de la cabecera de autorización que da la herramienta de salud del sitio.

Comprobarlo es sencillo, solo tienes que ir de nuevo a la herramienta de salud del sitio y habrá desaparecido la advertencia, pasando ahora a ser una más de las pruebas completadas.

(3 votos, promedio: 5) Valora este artículo para ayudar a mejorar la calidad del blog

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

Sobre el autor

5 comentarios en “Falta o no es válida la cabecera de autorización ¿qué significa? ¿cómo se soluciona?”

  1. Hola Fernando,

    Tu artículo está muy claro pero no me ha funcionado ninguna de las soluciones que propones.

    Como último recurso he optado por incluir este código al final de mi archivo htaccess pero sin ningún resultado.

    # Activar manualmente la cabecera de autorización
    
    SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1

    Estoy convencido de que mi servidor es Apache pero ¿cómo puedo estar seguro del todo?

    Muchas gracias por tu ayuda.

    1. También puede ser un plugin de seguridad que esté bloqueando la conexión, pero antes probaría con el .htaccess pero poniendo completo el código, con la comprobación de setenvif, como en mi ejemplo.

      Si te funcionan otras reglas de .htaccess tu servidor es Apache

      1. Muchísimas gracias por tu rapidísima respuesta, Fernando, eres muy amable.

        Me temo que, salvo que no te haya comprendido, mi htaccess ya cuenta con el código completo. Ya estaba ahí, (no lo he puesto yo):

        # BEGIN WordPress
        # Las directivas (líneas) entre «BEGIN WordPress» y «END WordPress» son
        # generadas dinámicamente y solo deberían ser modificadas mediante filtros de WordPress.
        # Cualquier cambio en las directivas que hay entre esos marcadores serán sobrescritas.
        
        RewriteEngine On
        RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
        RewriteBase /
        RewriteRule ^index\.php$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /index.php [L]
        
        
        # END WordPress

        Por lo que dices del plugin de seguridad, el único que utilizo es el Really Simple SSL.

        A parte de ese, los mayores plugins que utilizo son

        Elementor
        Elementor Pro
        WP Rocket
        Yoast Premium
        Ultimate Member

        El tema es OceanWP, incluídas las extensiones de pago.

        Todo está a la última, con todas las actualizaciones cargadas.

        Además de todo esto la web está vigilada por SiteLock.

        ¿Se te ocurre que pueda ser alguno de esos el culpable?

        Si finalmente no puedo econtrar la solución, ¿es un problema grave?

        De nuevo, muchísimas gracias por tu gran ayuda.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información base sobre privacidad:
  • Responsable: Fernando Tellado ([email protected])
  • Fin del tratamiento: Moderación de comentarios para evitar spam
  • Legitimación: Tu consentimiento
  • Comunicación de los datos: No se comunicarán los datos a terceros salvo por obligación legal
  • Derechos: Acceso, rectificación, portabilidad, olvido

 

Ir arriba Ir al contenido