🔎 Error 406 – Not Acceptable (No aceptable)
El error 406 ocurre cuando el servidor sí encuentra el recurso, pero no puede entregarlo en un formato aceptable según lo que el navegador o cliente solicita.
Esto suele estar relacionado con cabeceras como:
-
Accept: -
Accept-Language: -
Accept-Encoding: -
Accept-Charset:
El cliente pide un formato, idioma o codificación que el servidor no puede proporcionar.
✅ Causas más comunes
🔧 Soluciones recomendadas
1️⃣ Verificar el tipo de contenido solicitado
Ejemplo típico:
El cliente envía:
Pero el servidor responde solo con:
➡️ Solución: ajustar la ruta para que devuelva el tipo correcto.
2️⃣ Revisar idiomas y codificaciones
y tu sitio no lo soporta → 406.
Solución: permitir idiomas alternativos o eliminar restricciones.
3️⃣ Desactivar temporalmente mod_security / mod_negotiation
En servidores Apache, estos módulos pueden bloquear contenido.
En cPanel → ModSecurity → Desactivar (solo para pruebas)
Si el error desaparece, ajusta las reglas.
4️⃣ Revisar compresiones en el servidor
Si usas gzip o Brotli y el cliente no los acepta:
➡️ Necesitas desactivar compresión para esa petición o ajustar la configuración.
5️⃣ Corregir respuestas en APIs o frameworks
Ejemplo en Laravel:
Si tu ruta devuelve HTML cuando debería devolver JSON:
En Node.js:
Asegúrate de usar:
y no res.send() con HTML.
6️⃣ Probar desde otro navegador o con cURL
Esto ayuda a verificar qué está solicitando realmente el cliente.
Ejemplo:
🔐 Consejo Pro
Revisa la cabecera Accept: que envía el cliente y compárala con el Content-Type: que devuelve el servidor.
Si no coinciden → aparece el 406.
Ejemplo de solución rápida en Apache:
Esto permite entregar JSON correctamente.