Estás viendo la documentación de Apigee Edge.
Ve a 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
código de error protocol.http.UnsupportedEncoding
como respuesta a 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 se produce si el valor del encabezado Content-Encoding
especificado en
la solicitud HTTP enviada por el cliente a Apigee o la respuesta HTTP enviada por el servidor de backend a
Apigee no contiene
codificación compatible con Apigee, según la especificación
RFC 7231, sección 6.5.13: 415 Tipo de medio no admitido.
Las posibles causas de este error son las siguientes:
Causa | Descripción | Instrucciones de solución de problemas aplicables para |
---|---|---|
Se usó codificación no compatible en la solicitud | El encabezado de solicitud Content-Encoding contiene una codificación que no es compatible
de Apigee Edge. |
Usuarios perimetrales de nubes públicas y privadas |
Se usó codificación no compatible en la respuesta | El encabezado de respuesta del servidor de backend Content-Encoding contiene la codificación que
no es compatible con Apigee Edge. |
Usuarios perimetrales de nubes públicas y privadas |
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 API, haz lo siguiente:
- Accede a tu cuenta de Apigee Edge.
Cambia a la organización en la que quieres investigar el problema:
- Navega a Analyze > Supervisión de API > Investigar.
- Selecciona el período específico en el que observaste los errores.
- Asegúrate de que el filtro Proxy esté configurado en Todos.
- Traza Código de error en Tiempo.
Selecciona una celda que tenga el código de falla
protocol.http.UnsupportedEncoding
, como se muestra a continuación:La información sobre el código de falla
protocol.http.UnsupportedEncoding
se muestra como se muestra a continuación:Haz clic en Ver registros y expande una de las solicitudes que fallan con
415
para ver más información:- En la ventana Registros, observa los siguientes detalles:
- Fuente del error: Muestra que
apigee
muestra el error. otarget
. - Código de error: Debe coincidir con
protocol.http.UnsupportedEncoding
.
- Fuente del error: Muestra que
- Si la Fault Source es
apigee
, eso indica que la solicitud contenía codificación incompatible en el encabezadoContent-Encoding
. - Si la fuente del error es
target
, eso indica que el servidor de backend contenía una codificación incompatible en el encabezadoContent-Encoding
.
Herramienta de seguimiento
Para diagnosticar el error con la herramienta Trace, sigue estos pasos:
- Habilita el
de registro y una de las siguientes opciones:
- Espera a que se produzca el error
415 Unsupported Media Type
. - Si puedes reproducir el problema, realiza la llamada a la API para hacerlo.
415 Unsupported Media Type
error.
- Espera a que se produzca el error
Asegúrate de que Show all FlowInfos esté habilitado:
- Selecciona una de las solicitudes fallidas y examina el seguimiento.
- Navega por las diferentes fases del seguimiento y localiza dónde ocurrió la falla.
Generalmente, encontrarás el error en un flujo después de la solicitud enviada al destino servidor, como se muestra a continuación:
Anota el valor del error del seguimiento.
En el seguimiento de ejemplo anterior, se muestra el error como
Unsupported Encoding "utf-8"
. Desde Apigee genera el error después de que se envió la solicitud al servidor de backend, indica que el servidor de backend envió el encabezado de respuestaContent-Encoding
con el valor de"utf-8"
, que no es una codificación compatible con Apigee.- Navega a la fase AX (datos registrados de Analytics) en el seguimiento y haz clic en ella.
Desplázate hacia abajo hasta la sección Encabezados de error / respuesta en Detalles de fase. panel y determinar 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 se produce porque el valor de codificación no admitido de"utf-8"
pasó de backend en el encabezado de respuestaContent-Encoding
.Encabezados de respuesta Valor X-Apigee-fault-code protocol.http.UnsupportedEncoding
X-Apigee-fault-source target
- Comprueba si estás usando
encadenamiento de proxy; es decir, si el servidor o extremo de destino invoca a otro
proxy en Apigee.
Para determinarlo, regresa a la fase Solicitud enviada al servidor de destino. Haz clic en Show Curl.
- Se abrirá la ventana Curl para la solicitud enviada al servidor de destino, donde podrás 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 proxy
el encadenamiento. En este caso, debes repetir todos los pasos anteriores para el proxy en cadena hasta que
determinas qué está causando realmente el error
415 Unsupported Media Type
. - Si el alias del host del servidor de destino apunta a tu servidor backend, eso indica tu servidor de backend pasa la codificación no compatible a Apigee.
Registros de acceso de Nginix
Para diagnosticar el error con los registros de acceso de NGINX, haz lo siguiente:
- Si eres un usuario de la nube privada, puedes usar los registros de acceso de NGINX para determinar
la información clave sobre los errores
415
de HTTP. Verifica los registros de acceso de NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Busca errores
415
durante un período específico (si el problema ocurrió en el pasado) o si todavía hay solicitudes que fallan con415
. Si encuentras algún error
415
con la coincidencia X-Apigee-fault-code el valor deprotocol.http.UnsupportedEncoding
y, luego, determina el valor de la X-Apigee-fault-source.Error 415 de muestra 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
La fuente X-Apigee-fault-source también podría tener el valor
target
.
Causa: Codificación no admitida en la solicitud
Diagnóstico
- Determina el código de error y la fuente de errores del error observado con la API. Registros de acceso de Monitoring o NGINX, como se explica en Pasos comunes del diagnóstico.
- Si el Fault Code es
protocol.http.UnsupportedEncoding
y el Fault Source tiene el valorapigee
oMP
, por lo tanto, esto indica que el valor que envió la aplicación cliente contiene una codificación incompatible en el encabezado de la solicitudContent-Encoding
- Puedes determinar el valor de la codificación no admitida que se pasa como parte de la solicitud HTTP.
con uno de los siguientes métodos:
Mensaje de error
Si aparece el mensaje de error:Si tienes acceso al mensaje de error completo que recibiste de Apigee Edge, consulta a
faultstring
.faultstring
contiene el valor de la clase y el final de la codificación.Ejemplo de mensaje de error:
"faultstring":"Unsupported Encoding \"UTF-8\""
En el mensaje de error anterior, observa que el valor de la codificación incompatible está
“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 error:protocol.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, realiza la
los siguientes 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 que aparecen en Codificación compatible, este es el la causa de este error.Solicitud de muestra:
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 un Codificación compatible en Apigee Edge. Por lo tanto, esta solicitud falla y muestra el error415 Unsupported Media Type
con el siguiente código de error:protocol.http.UnsupportedEncoding
- Determina el valor que se pasa al encabezado de la solicitud
Solució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 admitida como valor del encabezado
Content-Encoding
en la solicitud - La carga útil de la solicitud en el formato admitido para Apigee Edge y coincide con el formato
especificado en el encabezado
Content-Encoding
- Solo la codificación admitida como 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 de error y la fuente de errores del error observado con la API. Registros de acceso de Monitoring, Trace Tool o NGINX como se explica en Pasos comunes del diagnóstico.
- Si la Fuente del error tiene el valor
target
, esto indica que de respuesta enviada por el servidor de backend contiene una codificación incompatible en elContent-Encoding
. - Puedes determinar el valor de la codificación no admitida que se pasó como parte de la respuesta HTTP desde
el servidor de backend con uno de los siguientes métodos:
Mensaje de error
Si aparece el mensaje de error:Si tienes acceso al mensaje de error completo que recibiste de Apigee Edge, consulta
faultstring
.faultstring
contiene el valor de codificación incompatible.Ejemplo de mensaje de error:
"faultstring":"Unsupported Encoding \"UTF-8\""
-
En el mensaje de error anterior, observa que el valor de la codificación incompatible está
“UTF-8”
, como se ve enfaultstring
.Como
“UTF-8”
no es una codificación compatible con Apigee Edge, esta La solicitud falla y genera el error415 Unsupported Media Type
con el siguiente código de error:protocol.http.UnsupportedEncoding
Herramienta de seguimiento
Usa Trace:- Si no tienes el seguimiento de la solicitud con errores, dirígete a Resolución.
- Si has capturado un registro de la falla, puedes determinar los
la codificación que pasa el servidor de backend como parte de la respuesta
Content-Encoding
encabezado, como se explica en la herramienta Trace.
Solució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 admitida como el valor de la
Encabezado
Content-Encoding
en la solicitud - La carga útil de respuesta en el formato admitido para Apigee Edge y coincide con el formato
especificado en el encabezado
Content-Encoding
- Solo la codificación admitida como el valor de la
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 desinflación. |
Especificación
Apigee responde con la respuesta de error 415 Unsupported Media Type
según el
siguiente especificación de RFC:
Especificación |
---|
RFC 7231, sección 6.5.13: 415 Tipo de medio no admitido |
Puntos clave para tener en cuenta
Ten en cuenta lo siguiente:
- Si Apigee muestra el error
415
debido a que se pasó una codificación no compatible el encabezadoContent-Encoding
como parte de la solicitud a la API y, luego, haz 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 enviada por Apigee Edge usa políticas como IncreaseFault yAssignMessage.
Esto se debe a que este error ocurre en una fase temprana del Message Processor antes de que de que se pueda ejecutar la política.
- Si Apigee muestra el error
415
debido a que se pasó una codificación no compatible en el encabezado de respuesta de tu servidor de backend, debes corregirlo 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 del equipo de asistencia de Apigee Edge, ve a Debe recopilar información de diagnóstico.
Se debe recopilar información de diagnóstico
Si aún necesitas ayuda del equipo de asistencia de Apigee, reúne los siguientes datos información de diagnóstico y, luego, comunícate con el equipo de asistencia de Apigee Edge:
Si eres 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 de 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 fallidas
- Nombre del entorno
- Paquete de proxy de API
- Archivo de seguimiento de las solicitudes a la API
Registros de acceso de NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Dónde: ORG, ENV y PORT# se reemplazan por valores reales.
- Registros del sistema del procesador de mensajes
/opt/apigee/var/log/edge-message- processor/logs/system.log