Estás consultando la documentación de Apigee Edge.
Consulta la
documentación de Apigee X. Información
Síntoma
La aplicación cliente obtiene un código de estado HTTP de 415 Unsupported Media Type
con el código de error protocol.http.UnsupportedEncoding
como respuesta a las llamadas a la API.
Mensaje de error
La aplicación cliente obtiene el siguiente código de respuesta:
HTTP/1.1 415 Unsupported Media Type
Además, es posible que veas un mensaje de error similar al que se muestra a continuación:
{ "fault":{ "faultstring":"Unsupported Encoding \"UTF-8\"", "detail":{ "errorcode":"protocol.http.UnsupportedEncoding" } } }
Causas posibles
Este error ocurre si el valor del encabezado Content-Encoding
especificado en la solicitud HTTP que envió el cliente a Apigee o en la respuesta HTTP que envió el servidor de backend a Apigee no contiene la codificación compatible con Apigee, según la especificación
RFC 7231, sección 6.5.13: 415 Tipo de medio no compatible.
Las posibles causas de este error son las siguientes:
Causa | Descripción | Instrucciones de solución de problemas aplicables para |
---|---|---|
Se usó una codificación no compatible en la solicitud | El encabezado de solicitud Content-Encoding contiene una codificación que no es compatible con Apigee Edge. |
Usuarios de la nube pública y privada de Edge |
Se usó una codificación no compatible en la respuesta | El encabezado de respuesta Content-Encoding del servidor de backend contiene una codificación que no es compatible con Apigee Edge. |
Usuarios de la nube pública y privada de Edge |
Pasos comunes de diagnóstico
Para diagnosticar el error, puedes usar cualquiera de los siguientes métodos:
Supervisión de API
Para diagnosticar el error con la supervisión de la API, sigue estos pasos:
- Accede a tu cuenta de Apigee Edge.
Cambia a la organización en la que quieres investigar el problema:
- Navega a la página Analyze > API Monitoring > Investigate.
- Selecciona el período específico en el que observaste los errores.
- Asegúrate de que el filtro Proxy esté configurado en Todos.
- Traza el código de falla en función del valor Time.
Selecciona una celda que tenga el código de falla
protocol.http.UnsupportedEncoding
, como se muestra a continuación:A continuación, se muestra información sobre el código de falla
protocol.http.UnsupportedEncoding
:Haz clic en Ver registros y expande una de las solicitudes que fallan con el error
415
para ver más información:- En la ventana Registros, ten en cuenta los siguientes detalles:
- Fuente de errores: Muestra que
apigee
otarget
muestran el error. - Código de fallas: Debe coincidir con
protocol.http.UnsupportedEncoding
.
- Fuente de errores: Muestra que
- Si la fuente de errores es
apigee
, esto indica que la solicitud contenía una codificación no compatible en el encabezadoContent-Encoding
. - Si la fuente de errores es
target
, eso indica que la respuesta del servidor de backend contenía una codificación no compatible en el encabezadoContent-Encoding
.
Herramienta de seguimiento
Para diagnosticar el error con la herramienta Trace, sigue estos pasos:
- Habilita la
sesión de registro y realiza una de estas acciones:
- Espera a que ocurra el error
415 Unsupported Media Type
. - Si puedes reproducir el problema, realiza la llamada a la API para reproducir el error
415 Unsupported Media Type
.
- Espera a que ocurra el error
Asegúrate de que la opción Show all FlowInfos esté habilitada:
- Selecciona una de las solicitudes con errores y examina el seguimiento.
- Navega por las diferentes fases del seguimiento y localiza dónde ocurrió la falla.
Por lo general, encontrarás el error en un flujo después de la fase Solicitud enviada al servidor de destino, como se muestra a continuación:
Observa el valor del error del seguimiento.
El seguimiento de muestra anterior muestra el error como
Unsupported Encoding "utf-8"
. Dado que Apigee genera el error después de que la solicitud se envió al servidor de backend, este indica que el servidor de backend envió el encabezado de respuestaContent-Encoding
con el valor"utf-8"
, que no es una codificación compatible en Apigee.- Navega a la fase AX (datos de Analytics registrados) en el seguimiento y haz clic en ella.
Desplázate hacia abajo hasta la sección Encabezados de error / respuesta en el panel Detalles de la fase y determina los valores de X-Apigee-fault-code y X-Apigee-fault-source como se muestra a continuación:
Verás los valores de X-Apigee-fault-code y X-Apigee-fault-source como
protocol.http.UnsupportedEncoding
ytarget
, lo que indica que este error se debe a que el servidor de backend pasó el valor de codificación no compatible de"utf-8"
en el encabezado de respuestaContent-Encoding
.Encabezados de respuesta Valor X-Apigee-fault-code protocol.http.UnsupportedEncoding
X-Apigee-fault-source target
- Verifica si usas
encadenamiento de proxy, es decir, si el servidor o extremo de destino invoca a otro proxy en Apigee.
Para determinar esto, regresa a la fase Solicitud enviada al servidor de destino. Haz clic en Mostrar rizos.
- Se abrirá la ventana Curl for Request Sent to Target Server, desde la cual puedes determinar el alias del host del servidor de destino.
- Si el alias del host del servidor de destino apunta a un alias de host virtual, es un encadenamiento de proxy. En este caso, debes repetir todos los pasos anteriores para el proxy en cadena hasta determinar qué está causando el error
415 Unsupported Media Type
. - Si el alias del host del servidor de destino apunta a tu servidor de backend, eso indica que el servidor de backend está pasando la codificación no compatible a Apigee.
Registros de acceso de Nginix
Para diagnosticar el error con los registros de acceso de NGINX, sigue estos pasos:
- Si eres un usuario de la nube privada, puedes usar los registros de acceso de NGINX para determinar la información clave de los errores HTTP
415
. Verifica los registros de acceso de NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Busca cualquier error
415
durante un período específico (si el problema ocurrió en el pasado) o si hay solicitudes que aún fallan con415
. Si encuentras algún error
415
en el que X-Apigee-fault-code coincida con el valor deprotocol.http.UnsupportedEncoding
, determina el valor de X-Apigee-fault-codeEjemplo de error 415 del registro de acceso de NGINX:
La entrada de ejemplo anterior del registro de acceso de NGINX tiene los siguientes valores para X-Apigee-fault-code y X-Apigee-fault-source:
Encabezados de respuesta Valor X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
X-Apigee-fault-source MP
X-Apigee-fault-source también podría tener elX-Apigee-fault-source valorX-Apigee-fault-source
Causa: No se admite la codificación en la solicitud.
Diagnóstico
- Determina el código de error y la fuente de errores del error observado con la supervisión de la API o los registros de acceso de NGINX, como se explica en Pasos comunes de diagnóstico.
- Si el código de falla es
protocol.http.UnsupportedEncoding
y la fuente de errores tiene el valorapigee
oMP
, esto indica que la solicitud enviada por la aplicación cliente contiene una codificación no compatible en el encabezado de la solicitudContent-Encoding
. - Puedes determinar el valor de la codificación no compatible que se pasó como parte de la solicitud HTTP mediante uno de los siguientes métodos:
Mensaje de error
Uso del mensaje de error:Si tienes acceso al mensaje de error completo que recibiste de Apigee Edge, consulta la
faultstring
.faultstring
contiene el valor de la codificación final no compatible.Ejemplo de mensaje de error:
"faultstring":"Unsupported Encoding \"UTF-8\""
En el mensaje de error anterior, ten en cuenta que el valor de la codificación no compatible es
“UTF-8”
, como se ve enfaultstring
.Dado que
“UTF-8”
no es una codificación compatible con Apigee Edge, esta solicitud falla con el error415 Unsupported Media Type
con el código de errorprotocol.http.UnsupportedEncoding
.
Solicitud real
Usa la solicitud real:- Si no tienes acceso a la solicitud real que realizó la aplicación cliente, ve a Resolución.
- Si tienes acceso a la solicitud real que realizó la aplicación cliente, sigue estos pasos:
- Determina el valor que se pasa al encabezado de la solicitud
Content-Encoding.
. - Si el valor que se pasa al encabezado de la solicitud
Content-Encoding
no es uno de los valores enumerados en la Codificación compatible, entonces esa es la causa del error.Ejemplo de solicitud:
curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: UTF-8" -X POST -d @request_payload.gz
La solicitud de ejemplo anterior envía el valor
"UTF-8"
al encabezadoContent- Encoding
, que no es una codificación compatible en Apigee Edge. Por lo tanto, esta solicitud falla con el error415 Unsupported Media Type
y el código de errorprotocol.http.UnsupportedEncoding
.
- Determina el valor que se pasa al encabezado de la solicitud
Resolución
- Consulta la lista de codificación compatible con Apigee en Codificación compatible.
- Asegúrate de que la aplicación cliente siempre envíe lo siguiente:
- Solo la codificación compatible como el valor del encabezado
Content-Encoding
en la solicitud - La carga útil de la solicitud en el formato compatible con Apigee Edge y que coincide con el formato
especificado en el encabezado
Content-Encoding
- Solo la codificación compatible como el valor del encabezado
En el ejemplo anterior, la carga útil de la solicitud tiene una extensión
gz
que indica que el contenido debe sergzip
. Para solucionar el problema, envía el encabezado de la solicitud comoContent-Encoding: gzip
y la carga útil de la solicitud en formatogzip
:curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: gzip" -X POST -d @request_payload.gz
Causa: Codificación no compatible en la respuesta
Diagnóstico
- Determina el código con fallas y la fuente de errores del error observado con la supervisión de la API, la herramienta de seguimiento o los registros de acceso de NGINX, como se explica en Pasos comunes de diagnóstico.
- Si Fuente de errores tiene el valor
target
, esto indica que la respuesta que envió el servidor de backend contiene una codificación no compatible en el encabezadoContent-Encoding
. - Puedes determinar el valor de la codificación no compatible que se pasa como parte de la respuesta HTTP desde el servidor de backend con uno de los siguientes métodos:
Mensaje de error
Uso del mensaje de error:Si tienes acceso al mensaje de error completo que recibiste de Apigee Edge, consulta la
faultstring
.faultstring
contiene el valor de la codificación no compatible.Ejemplo de mensaje de error:
"faultstring":"Unsupported Encoding \"UTF-8\""
-
En el mensaje de error anterior, ten en cuenta que el valor de la codificación no compatible es
“UTF-8”
, como se ve enfaultstring
.Dado que
“UTF-8”
no es una codificación compatible con Apigee Edge, esta solicitud falla y muestra el error415 Unsupported Media Type
con el código de errorprotocol.http.UnsupportedEncoding
.
Herramienta de seguimiento
Con Trace:- Si no tienes el seguimiento de la solicitud que falla, ve a Resolución.
- Si capturaste un seguimiento para la falla, puedes determinar la codificación no compatible que pasó el servidor de backend como parte del encabezado de respuesta
Content-Encoding
, como se explica en la Herramienta de seguimiento.
Resolución
- Consulta la lista de codificación compatible con Apigee en Codificación compatible
- Asegúrate de que el servidor de backend siempre envíe lo siguiente:
- Solo la codificación compatible como valor para el encabezado
Content-Encoding
en la solicitud - La carga útil de respuesta en el formato compatible con Apigee Edge y con el formato
especificado en el encabezado
Content-Encoding
- Solo la codificación compatible como valor para el encabezado
Codificación compatible
En la siguiente tabla, se muestra el formato de codificación que admite Apigee Edge:
Encabezado | Codificación | Descripción |
---|---|---|
Content-Encoding |
gzip |
El formato gzip de Unix |
deflate |
Este formato usa la estructura zlib con el algoritmo de compresión de reducción de tamaño. |
Especificación
Apigee responde con la respuesta de error 415 Unsupported Media Type
según la siguiente especificación de RFC:
Especificación |
---|
RFC 7231, sección 6.5.13: 415 Tipo de medio no compatible |
Puntos clave para tener en cuenta
Ten en cuenta lo siguiente:
- Si Apigee muestra el error
415
debido a una codificación no compatible que se pasó en el encabezadoContent-Encoding
como parte de la solicitud a la API, sucede lo siguiente:- No podrás capturar el registro de esas solicitudes.
-
No podrás modificar el formato ni el contenido de la respuesta de error que envió Apigee Edge con políticas como ElevateFault yAssignMessage.
Esto se debe a que este error ocurre en una fase inicial en Message Processor, antes de que se pueda ejecutar cualquier política.
- Si Apigee muestra el error
415
debido a una codificación no compatible que se pasó en el encabezado de respuesta de tu servidor de backend, se debe corregir en el servidor de backend para evitar este error. Trabaja con tu equipo de backend según corresponda para solucionar este problema.
Si aún necesitas asistencia de la Asistencia de Apigee Edge, consulta Debes recopilar información de diagnóstico.
Se debe recopilar información de diagnóstico
Si aún necesitas ayuda de la asistencia de Apigee, recopila la siguiente información de diagnóstico y, luego, comunícate con el equipo de asistencia de Apigee Edge:
Si eres un usuario de la nube pública, proporciona la siguiente información:
- Nombre de la organización
- Nombre del entorno
- Nombre del proxy de API
- Completa el comando
curl
que se usa para reproducir el error415
. - Archivo de seguimiento para las solicitudes a la API
Si eres un usuario de la nube privada, proporciona la siguiente información:
- Mensaje de error completo observado para las solicitudes con errores
- Nombre del entorno
- Paquete de proxy de API
- Archivo de seguimiento para las solicitudes a la API
Registros de acceso de NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Dónde: Se reemplazan ORG, ENV y PORT# por valores reales.
- Registros del sistema del procesador de mensajes
/opt/apigee/var/log/edge-message- processor/logs/system.log