Cuando se realizan solicitudes a la API a través de Apigee, los routers de componentes de Apigee y los procesadores de mensajes, o los servidores de backend pueden mostrar errores a las aplicaciones cliente.
Errores de Message Processor
Message Processor es el componente central de Apigee que procesa las políticas y, además, interactúa con los servidores de backend. Puede mostrar errores si detecta problemas como los que se mencionan a continuación:
Problemas de conectividad de red, fallas del protocolo de enlace TLS, falta de disponibilidad del servidor de backend, falta de respuesta durante la comunicación con el servidor de backend
Fallas durante la ejecución de la política
Los encabezados HTTP, la codificación, la ruta de acceso, el incumplimiento de las especificaciones de HTTP y los límites del producto, etc. no son válidos:
Con la solicitud HTTP que envían las aplicaciones cliente
O
Con la respuesta HTTP que envió el servidor de backend
Y mucho más
Error de muestra de Message Processor
Message Processor siempre muestra un código de estado HTTP seguido de un mensaje de error junto con un código de error en formato JSON como se muestra a continuación:
La aplicación cliente obtiene un código de respuesta como el siguiente ejemplo:
HTTP/1.1 504 Gateway Timeout
Una respuesta de error de Message Processor aparece en el siguiente formato:
Descripción de los campos en la respuesta de error:
Campo
Descripción
faultstring
Contiene el mensaje de error que describe la posible causa del error
errorcode
Código de error (también conocido como código de falla) asociado con el error
reason
Contiene un mensaje que indica el posible motivo del error.
Catálogo de errores del entorno de ejecución
Este catálogo de errores proporciona toda la información que necesitas saber sobre los códigos de error del entorno de ejecución (para errores que no son políticos) que muestra el componente del procesador de mensajes de Apigee. Incluye la siguiente información para cada uno de los códigos de error:
Código de estado HTTP
Mensaje de error
Motivo del error (no todos los mensajes de error muestran un reason)
Causas posibles del error
Cualquier límite de productos o especificaciones HTTP asociadas
Guías y videos que contienen instrucciones para diagnosticar la causa del error y las soluciones efectivas que puedes aplicar a fin de resolver el error por tu cuenta (cuando esté disponible)
Solución que puedes aplicar para resolver el error por tu cuenta
Se tratan las siguientes categorías de código de error:
Usa el cuadro Buscar que se encuentra a continuación para filtrar la tabla y mostrar la información anterior para un código de error específico. Puedes buscar el código de estado o cualquier contenido en cualquier campo de la tabla.
searchBuscar
Código de error
Descripción
Corregir
flow.*
flow.APITimedOut
Código de estado HTTP:
504 Gateway Timeout
Mensaje de error:
API timed out
Causa posible:
Este error se produce si se produce una de las siguientes situaciones:
El servidor de backend no responde dentro del tiempo de espera configurado por la propiedad api.timeout para el proxy de API específico.
Una política tarda mucho tiempo debido a las operaciones que requieren mucha capacidad de procesamiento, una carga alta o un rendimiento bajo.
flow.SharedFlowNotFound
Código de estado HTTP:
500 Internal Server Error
Mensaje de error:
Shared Flow {shared_flow_name} Not Found
Causa posible:
Este error se produce si el flujo compartido específico es el siguiente:
Este error ocurre solo si se cumplen estas condiciones:
La codificación especificada en el encabezado de la solicitud HTTP Content-Encoding es válida y es compatible con Apigee,
PERO
El formato de carga útil que envía el cliente como parte de la solicitud HTTP no coincide con el formato de codificación especificado en el encabezado Content-Encoding
Este error ocurre solo si se cumplen estas condiciones:
La codificación especificada en el encabezado de respuesta HTTP Content-Encoding del servidor de destino o backend es válida y compatible con Apigee,
PERO
El formato de carga útil que envía el servidor de backend/destino como parte de la respuesta HTTP no coincide con el formato de codificación especificado en el encabezado Content-Encoding
messaging.adaptors.http.flow.ErrorResponseCode
Código de estado HTTP:
500
Mensaje de error:
El mensaje de error y el formato pueden variar según la implementación del servidor de backend.
Causa posible:
Este error se produce si el servidor de backend responde con el código de estado 500 a Apigee.
Código de estado HTTP:
503
Mensaje de error:
El mensaje de error y el formato pueden variar según la implementación del servidor de backend.
Causa posible:
Este error se produce si el servidor de backend responde con el código de estado 503 a Apigee.
Código de estado HTTP:
504
Mensaje de error:
El mensaje de error y el formato pueden variar según la implementación del servidor de backend.
Causa posible:
Este error se produce si el servidor de backend responde con el código de estado 504 a Apigee.
Nota: El código de error messaging.adaptors.http.flow.ErrorResponseCode no se muestra como parte del mensaje de error enviado a las aplicaciones cliente. Esto se debe a que Apigee establece este código de error cada vez que el servidor de backend responde con un error y con cualquiera de los códigos de estado 4XX o 5XX. Puedes ver este código de error en la supervisión de API o en la base de datos de estadísticas.
messaging.adaptors.http.flow.GatewayTimeout
Código de estado HTTP:
504 Gateway Timeout
Mensaje de error:
Gateway Timeout
Motivo:
TARGET_READ_TIMEOUT
Causa posible:
Este error ocurre si el servidor de backend no responde al procesador de mensajes de Apigee dentro del tiempo de espera de E/S configurado en el procesador de mensajes.
messaging.adaptors.http.flow.LengthRequired
Código de estado HTTP:
411 Length Required
Mensaje de error:
'Content-Length' is missing
Motivo:
CLIENT_REQUEST_CONTENT_LENGTH_REQUIRED
Causa posible:
Este error se produce si la aplicación cliente no pasa el encabezado Content-Length como parte de las solicitudes HTTP POST y PUT que se envían a Apigee.
Nota: Las solicitudes que fallan con este error no se pueden capturar en la herramienta Trace, ya que el procesador de mensajes realiza esta validación en una fase muy temprana, mucho antes de procesar la solicitud y ejecutar cualquier política en el proxy de API
Para resolver este error, realiza los siguientes pasos:
Asegúrate de que la aplicación cliente siempre pase el encabezado Content-Length como parte de las solicitudes HTTP POST y PUT enviadas a Apigee. Por ejemplo:
curl -X POST https://HOSTALIAS/PATH -d '{"name": "abc"}' -H "Content-Length: 15"
Incluso si pasas una carga útil vacía con solicitudes POST y PUT, asegúrate de que el encabezado Content-Length: 0 se pase. Por ejemplo:
curl -X POST https://HOSTALIAS/PATH -H "Content-Length: 0"
messaging.adaptors.http.flow.NoActiveTargets
Código de estado HTTP:
503 Service Unavailable
Mensaje de error:
The Service is temporarily unavailable
Motivo:
TARGET_HEALTHCHECK_CONNECT_TIMEOUT
TARGET_HEALTHCHECK_CONNECTION_REFUSED
TARGET_HEALTHCHECK_HTTPS_REQUEST_OVER_HTTP
TARGET_HEALTHCHECK_UNEXPECTED_EOF
Causa posible:
Este error ocurre en una de las siguientes situaciones, si usas
TargetServer en Apigee:
La resolución incorrecta de DNS del host del servidor de backend del servidor de autorización personalizado dio como resultado direcciones IP incorrectas, lo que genera errores de conexión.
Errores de tiempo de espera de la conexión debido a los siguientes motivos:
La restricción de firewall en el servidor de backend evita que Apigee se conecte al servidor de backend.
Problemas de conectividad de red entre Apigee y el servidor de backend.
El host especificado en TargetServer es incorrecto o tiene caracteres no deseados (como un espacio).
Este error también puede ocurrir si las verificaciones de estado configuradas para supervisar la verificación de estado de los servidores de destino fallan.
messaging.adaptors.http.flow.RequestTimeOut
Código de estado HTTP:
408 Request Timeout
Mensaje de error:
Request timed out
Motivo:
CLIENT_READ_TIMEOUT
Causa posible:
Este error se produce si Message Processor de Apigee no recibe la carga útil de la solicitud de la aplicación cliente durante el tiempo de espera de E/S que se configuró en el componente Message Processor.
Corregir
Asegúrate de que la aplicación cliente envíe la carga útil de la solicitud dentro del tiempo de espera de E/S configurado en el componente Message Processor de Apigee.
messaging.adaptors.http.flow.ServiceUnavailable
Código de estado HTTP:
503 Service Unavailable
Mensaje de error:
The Service is temporarily unavailable
Motivo:
TARGET_CONNECT_TIMEOUT
TARGET_WRITE_BROKEN_PIPE
TARGET_WRITE_CONNECTION_RESET_BY_PEER
TARGET_CONNECT_CONNECTION_REFUSED
Causa posible:
Este error ocurre en una de las siguientes situaciones:
La resolución de DNS incorrecta del host del servidor de backend por el servidor de autorización personalizado dio como resultado direcciones IP incorrectas, lo que genera errores de conexión.
Errores de tiempo de espera de la conexión debido a los siguientes motivos:
La restricción de firewall en el servidor de backend evita que Apigee se conecte al servidor de backend.
Problemas de conectividad de red entre Apigee y el servidor de backend.
El host del servidor de destino especificado en el extremo de destino es incorrecto o tiene caracteres no deseados (como el espacio).
Este error también puede ocurrir si el servidor de backend cierra la conexión antes de tiempo, mientras el procesador de mensajes aún envía la carga útil de la solicitud al servidor de backend.
messaging.adaptors.http.flow.SslHandshakeFailed
Código de estado HTTP:
503 Service Unavailable
Mensaje de error:
SSL Handshake failed {error_message}
Causa posible:
Este error ocurre durante el proceso de protocolo de enlace SSL entre el procesador de mensajes de Apigee y el servidor de backend si se cumplen las siguientes condiciones:
El almacén de confianza del procesador de mensajes de Apigee:
Contiene una cadena de certificados que no coincide con la cadena completa del certificado del servidor de backend
O
No contiene la cadena de certificados completa del servidor de backend
La cadena de certificados que presenta el servidor de backend:
Contiene un nombre de dominio completamente calificado (FQDN) que no coincide con el nombre de host especificado en el extremo de destino
O
Contiene una cadena de certificados incorrecta o incompleta
El servidor de backend rechaza la versión de TLS que usa Apigee.
Por ejemplo, si el servidor de backend solo acepta la versión 1.3 de TLS, pero el servidor de destino de Apigee tiene la versión 1.2 de TLS configurada en su campo TLS Protocol (o no se configura ninguna versión de TLS, en cuyo caso Apigee actualmente no usará la versión 1.3 de TLS de forma predeterminada), la conexión falla debido a una discrepancia en las versiones del protocolo.
Este error ocurre en una de las siguientes situaciones:
TargetServer no está configurado de forma correcta para admitir conexiones TLS/SSL en Apigee.
El servidor de backend puede cerrar la conexión de forma abrupta, mientras Apigee espera una respuesta del servidor de backend.
Mantén los tiempos de espera activos en configuración incorrecta en Apigee y el servidor de backend.
messaging.runtime.*
messaging.runtime.RouteFailed
Código de estado HTTP:
500 Internal Server Error
Mensaje de error:
Unable to route the message to a TargetEndpoint
Causa posible:
Este error se produce si Apigee no puede enrutar la solicitud a ninguno de los TargetEndpoints por los siguientes motivos:
No hay ninguna condición de regla de enrutamiento (<RouteRule>) que coincida con la solicitud en un proxy.
Y
No hay una regla de ruta predeterminada definida en el ProxyEndpoint (es decir, <RouteRule> sin ninguna condición)
Corregir
Para abordar este error, sigue estas instrucciones:
Revisa las reglas de enrutamiento definidas en tu ProxyEndpoint y modifícalas para asegurarte de que haya al menos una condición de regla de enrutamiento que coincida con tu solicitud.
Te recomendamos definir una regla de enrutamiento predeterminada sin condición cuando tienes varias RouteRules.
Asegúrate de que la regla de ruta predeterminada se defina por última vez en la lista de rutas condicionales, ya que las reglas se evalúan de arriba a abajo en el ProxyEndpoint.
Para obtener más información sobre la definición de condiciones <RouteRule> en un ProxyEndpoint, consulta Objetivos condicionales.
protocol.http.* - Caused due to bad request
protocol.http.BadFormData
Código de estado HTTP:
500 Internal Server Error
Mensaje de error:
Bad Form Data
Causa posible:
Este error se produce si y solo si se cumplen todas las siguientes condiciones:
La solicitud HTTP que envió el cliente a Apigee contiene lo siguiente:
Content-Type: application/x-www-form-urlencoded,
y
Datos del formulario con el signo de porcentaje (%) o el signo de porcentaje (%) seguido de caracteres hexadecimales no válidos que no están permitidos según Formularios: Sección 17.13.4.1.
El proxy de la API en Apigee lee los parámetros de formulario específicos que contienen cualquier carácter que no se permita mediante ExtractVariables o la política AssignMessage en el flujo de solicitud.
protocol.http.DuplicateHeader
Código de estado HTTP:
400 Bad Request
Mensaje de error:
Duplicate Header "{header_name}"
Causa posible:
Este error se produce si un encabezado HTTP específico que no puede tener duplicados en Apigee aparece más de una vez con los mismos valores o con valores diferentes como parte de la solicitud HTTP que envía la aplicación cliente a Apigee.
Asegúrate de que la solicitud HTTP que envía la aplicación cliente a Apigee siempre contenga un nombre de encabezado válido, según RFC 7230, sección 3.2: Campos de encabezado.
protocol.http.HeaderNameWithNonAsciiChar
Código de estado HTTP:
400 Bad Request
Mensaje de error:
Header {header_name} contains non ascii character {character}
Causa posible:
Este error se produce si el nombre del encabezado que se envió como parte de la solicitud HTTP de la aplicación cliente a Apigee contiene caracteres que no son ASCII.
Header {header_name} contains invalid character {character}
Causa posible:
Este error se produce si el nombre del encabezado que se envía como parte de la solicitud HTTP que la aplicación cliente a Apigee contiene caracteres no válidos como igual (=), coma (,) y punto y coma (;), tabulación, CRLF y el carácter de salto de línea.
En el ejemplo anterior, {hostname} es dinámico y su valor cambiará con respecto al nombre de host proporcionado.
Motivo:
TARGET_CONNECT_HOST_NOT_REACHABLE
Causa posible:
Este error se produce si el host del servidor de destino especificado es incorrecto o tiene caracteres no deseados (como el espacio).
protocol.http.InvalidPath
Código de estado HTTP:
400 Bad Request
Mensaje de error:
Invalid path {path}
Causa posible:
Este error se produce si la ruta en la URL de la solicitud HTTP que envió la aplicación cliente a Apigee contiene caracteres que no se permiten según la especificación RFC 3986, sección 3.3: Ruta de acceso.
Asegúrate de que la ruta de acceso en la URL de solicitud HTTP que envió la aplicación cliente a Apigee no contenga ningún carácter que no esté permitido comosegún RFC 3986, sección 3.3: Ruta de acceso.
protocol.http.TooBigBody
Código de estado HTTP:
413 Request Entity Too Large
Mensaje de error:
Body buffer overflow
Causa posible:
Este error se produce si el tamaño de la carga útil que envía la aplicación cliente como parte de la solicitud HTTP a Apigee es mayor que el límite permitido en Apigee.
El tamaño total de todos los encabezados de solicitud que envió la aplicación cliente como parte de la solicitud HTTP a Apigee es mayor que el límite permitido en Apigee.
Este error se produce si el tamaño de la línea de solicitud que envía la aplicación cliente como parte de la solicitud HTTP a Apigee es mayor que el límite permitido en Apigee.
Este error se produce si el encabezado Content-Encoding que envió el cliente como parte de la respuesta HTTP contiene un formato de codificación/carga útil que no es compatible con Apigee.
Este error se produce si la URL de la solicitud del servidor de backend, representada por la variable de flujo target.url, contiene una ruta de acceso que comienza con un signo de interrogación (?) en lugar de una barra diagonal (/) de reenvío, que no es válida.
Este error se produce si el encabezado HTTP específico que no puede tener duplicados en Apigee aparece más de una vez con los mismos valores o con valores diferentes como parte de la respuesta HTTP que envía el servidor de backend a Apigee.
Asegúrate de que la respuesta HTTP que envía el servidor de backend a Apigee siempre contenga un nombre de encabezado válido, según RFC 7230, sección 3.2: Campos de encabezado.
protocol.http.EmptyPath
Código de estado HTTP:
500 Internal Server Error
Mensaje de error:
Request path cannot be empty
Causa posible:
Este error se produce si la URL de la solicitud HTTP del servidor de backend, representada por la variable de flujo target.url, contiene una ruta de acceso vacía.
Header {header_name} contains non ascii character {character}
Causa posible:
Este error se produce si el nombre del encabezado que envía el servidor de backend como parte de la respuesta HTTP a Apigee Edge contiene caracteres que no son ASCII.
Header {header_name} contains invalid character {character}
Causa posible:
Este error se produce si el nombre del encabezado que envía el servidor de backend como parte de la respuesta HTTP contiene caracteres no válidos, como igual (=), coma (,), punto y coma (;), tabulación, CRLF y carácter de salto de línea
Proxy refused to create tunnel with response status {status code}
Causa posible:
Este error ocurre durante la creación del túnel entre Apigee y el servidor de backend por el servidor proxy debido al firewall, la LCA (Lista de control de acceso), problemas de DNS, disponibilidad del servidor de backend, etcétera.
Nota: El código de estado en el mensaje de error (faultstring) proporciona la causa de alto nivel del problema.
protocol.http.Response306Reserved
Código de estado HTTP:
502 Bad Gateway
Mensaje de error:
Response Status code 306 is reserved, so can't be used.
Causa posible:
Este error se produce si el servidor de backend respondió con el código de estado 306 a Apigee.
El código de estado 306 se definió en una versión anterior de la especificación HTTP. Según la especificación HTTP actual, este código está reservado y no debe usarse.
Debido a que el código de estado 306 está reservado, asegúrate de que tu servidor de backend no use este código de estado mientras envía una respuesta a Apigee.
protocol.http.Response405WithoutAllowHeader
Código de estado HTTP:
502 Bad Gateway
Mensaje de error:
Received 405 Response without Allow Header
Causa posible:
El servidor de backend responde con el código de estado 405 Method Not Allowed sin el encabezado "Allow".
Este error se produce si la respuesta HTTP del servidor de backend a Apigee es 204 No Content o 205 Reset Content, pero contiene el cuerpo de la respuesta o uno o más de los siguientes encabezados:
Este error se produce si el tamaño de la carga útil que envía la aplicación cliente como parte de la solicitud HTTP a Apigee es mayor que el límite permitido en Apigee.
Este error se produce si el tamaño total de todos los encabezados de respuesta que envía el servidor de backend como parte de la respuesta HTTP a Apigee es mayor que el límite permitido en Apigee.
Este error se produce si el tamaño de la línea de respuesta que envía el servidor de backend como parte de la respuesta HTTP a Apigee es mayor que el límite permitido en Apigee Edge.
Este error se produce si el encabezado Content-Encoding que envía el servidor de backend como parte de la respuesta HTTP contiene el formato de codificación/carga útil que no es compatible con Apigee.
KeyAlias {KeyAlias_name} is not found in
Keystore {Keystore_Name}
Causa posible:
Este error se produce si no se encuentra el KeyAlias específico al que se hace referencia en el TargetEndpoint o TargetServer en el almacén de claves específico.
Corregir
Asegúrate de que el KeyAlias especificado en TargetEndpoint o TargetServer exista y sea parte del almacén de claves específico.
security.util.TrustStoreWithNoCertificates
Código de estado HTTP:
500 Internal Server Error
Mensaje de error:
TrustStore {truststore_name} has no certificates
Causa posible:
Este error se produce si el Truststore específico al que se hace referencia en el TargetEndpoint o TargetServer no contiene ningún certificado.
Corregir
Si deseas validar el certificado del servidor de backend y deseas usar el almacén de confianza en un TargetEndpoint o TargetServer, asegúrate de que el almacén de confianza contenga los certificados válidos del servidor de backend.
[[["Fácil de comprender","easyToUnderstand","thumb-up"],["Resolvió mi problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2024-12-22 (UTC)"],[],[]]