Esta é a documentação do Apigee Edge.
Acesse
Documentação da Apigee X. informações
Sintoma
O aplicativo cliente recebe um código de status HTTP de 415 Unsupported Media Type
com
código de erro protocol.http.UnsupportedEncoding
como uma resposta às chamadas de API.
Mensagem de erro
O aplicativo cliente recebe o seguinte código de resposta:
HTTP/1.1 415 Unsupported Media Type
Além disso, uma mensagem de erro semelhante a esta pode aparecer:
{ "fault":{ "faultstring":"Unsupported Encoding \"UTF-8\"", "detail":{ "errorcode":"protocol.http.UnsupportedEncoding" } } }
Causas possíveis
Esse erro ocorrerá se o valor do cabeçalho Content-Encoding
especificado no
a solicitação HTTP enviada pelo cliente para a Apigee ou a resposta HTTP enviada pelo servidor de back-end para
A Apigee não tem as
codificação compatível com a Apigee, de acordo com a especificação
RFC 7231, seção 6.5.13: 415 Tipo de mídia incompatível.
Estas são as possíveis causas desse erro:
Causa | Descrição | Instruções de solução de problemas aplicáveis para |
---|---|---|
Codificação sem suporte usada na solicitação | O cabeçalho da solicitação Content-Encoding contém uma codificação incompatível
pela Apigee Edge. |
Usuários de nuvem pública e privada de borda |
Codificação sem suporte usada na resposta | O cabeçalho de resposta do servidor de back-end Content-Encoding contém uma codificação que
não é compatível com o Apigee Edge. |
Usuários de nuvem pública e privada de borda |
Etapas comuns do diagnóstico
Para diagnosticar o erro, é possível usar qualquer um dos seguintes métodos:
Monitoramento de APIs
Para diagnosticar o erro usando a API Monitoring:
- Faça login na sua conta do Apigee Edge.
Mude para a organização na qual você quer investigar o problema:
- Navegue até o menu Analisar > Monitoramento de APIs > Investigar.
- Selecione o período específico em que você observou os erros.
- Verifique se o filtro Proxy está definido como Todos.
- Compare Código de falha com Time.
Selecione uma célula que tenha o código de falha
protocol.http.UnsupportedEncoding
, conforme mostrado abaixo:As informações sobre o código de falha
protocol.http.UnsupportedEncoding
são exibidas conforme mostrado abaixo:Clique em Ver registros e expanda uma das solicitações que falham com
415
. para visualizar mais informações:- Na janela Registros, observe os seguintes detalhes:
- Origem da falha:mostra que o erro é retornado por
apigee
. outarget
. - Código da falha:precisa corresponder a
protocol.http.UnsupportedEncoding
.
- Origem da falha:mostra que o erro é retornado por
- Se a Fault Source for
apigee
, isso indica que a solicitação continha codificação sem suporte no cabeçalhoContent-Encoding
. - Se a Origem da falha for
target
, isso indica que o servidor de back-end resposta continha codificação sem suporte no cabeçalhoContent-Encoding
.
Ferramenta Trace
Para diagnosticar o erro usando a ferramenta Trace:
- Ative o
sessão de trace e:
- Aguarde a ocorrência do erro
415 Unsupported Media Type
ou - Se você puder reproduzir o problema, faça a chamada de API para reproduzir
415 Unsupported Media Type
erro.
- Aguarde a ocorrência do erro
Verifique se a opção Show all FlowInfos está ativada:
- Selecione uma das solicitações com falha e examine o trace.
- Navegar pelas diferentes fases do trace e localizar onde a falha ocorreu.
Você encontrará o erro normalmente em um fluxo após a solicitação Request enviada ao destino servidor, conforme mostrado abaixo:
Anote o valor do erro do trace.
O rastro de amostra acima mostra o erro como
Unsupported Encoding "utf-8"
. Como o erro for gerado pela Apigee após o envio da solicitação ao servidor de back-end, isso indica que o servidor de back-end enviou o cabeçalho de respostaContent-Encoding
com o valor de"utf-8"
, o que não é um codificação compatível na Apigee.- Navegue até a fase AX (dados do Analytics registrados) no trace e clique nela.
Role para baixo até a seção Cabeçalhos de erro / resposta em Detalhes da fase. e determinar os valores de X-Apigee-fault-code e X-Apigee-fault-source, conforme mostrado abaixo:
Os valores de X-Apigee-fault-code e X-Apigee-fault-source vão aparecer como
protocol.http.UnsupportedEncoding
etarget
, indicando que esta é causado porque o valor de codificação incompatível de"utf-8"
foi transmitido pelo de back-end no cabeçalho de respostaContent-Encoding
.Cabeçalhos de resposta Valor X-Apigee-fault-code protocol.http.UnsupportedEncoding
X-Apigee-fault-source target
- Verifique se você está usando
encadeamento de proxy ou seja, se o servidor de destino/endpoint de destino está invocando outro
proxy na Apigee.
Para determinar isso, volte para a fase Solicitação enviada ao servidor de destino. Clique em Mostrar curl.
- A janela Curl for Request Sent to Target Server será aberta. Nela, você pode determinar o alias do host do servidor de destino.
- Se o alias de host do servidor de destino apontar para um alias de host virtual, então ele é proxy
encadeamento. Nesse caso, você precisa repetir todas as etapas acima para o proxy encadeado até
a determinar o que realmente está causando o erro
415 Unsupported Media Type
. - Se o alias de host do servidor de destino apontar para seu servidor de back-end, isso indica que seu servidor de back-end está transmitindo a codificação sem suporte para a Apigee.
Registros de acesso do Nginix
Para diagnosticar o erro usando registros de acesso do NGINX:
- Se você for um usuário da nuvem privada, poderá usar os registros de acesso do NGINX para determinar
as principais informações sobre erros HTTP
415
. Verifique os registros de acesso do NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Pesquisar erros
415
durante um período específico (se o problema tiver acontecido) no passado) ou se ainda há solicitações falhando com415
. Se você encontrar erros
415
com a correspondência X-Apigee-fault-code o valor deprotocol.http.UnsupportedEncoding
, depois determine o valor do grupo X-Apigee-fault-source.Exemplo de erro 415 do registro de acesso do NGINX:
O exemplo de entrada do registro de acesso do NGINX acima tem os seguintes valores para X- Apigee-fault-code e X-Apigee-fault-source:
Cabeçalhos de resposta Valor X-Apigee-fault-code protocol.http.Response405WithoutAllowHeader
X-Apigee-fault-source MP
O X-Apigee-fault-source também poderia ter oX-Apigee-fault-source valorX-Apigee-fault-source
Causa: codificação incompatível na solicitação
Diagnóstico
- Determine o código da falha e a fonte da falha do erro observado usando a API registros de acesso do Monitoring ou do NGINX, conforme explicado em Etapas comuns de diagnóstico.
- Se o Código da falha for
protocol.http.UnsupportedEncoding
e o Código da falha Source tem o valorapigee
ouMP
, o que indica que o a solicitação enviada pelo aplicativo cliente contém uma codificação não suportada no cabeçalho da solicitaçãoContent-Encoding
. - É possível determinar o valor de codificação não compatível passada como parte da solicitação HTTP
usando um dos seguintes métodos:
Mensagem de erro
Usar a mensagem de erro:Se você tiver acesso à mensagem de erro completa recebida do Apigee Edge, consulte ao
faultstring
. O campofaultstring
contém o valor do atributo programação.Exemplo de mensagem de erro:
"faultstring":"Unsupported Encoding \"UTF-8\""
Na mensagem de erro acima, observe que o valor da codificação não compatível é
“UTF-8”
, conforme mostrado emfaultstring
.Como
“UTF-8”
não é uma codificação compatível com a Apigee Edge, esta solicitação falha com o erro415 Unsupported Media Type
com o código de erro:protocol.http.UnsupportedEncoding
Solicitação real
Usando a solicitação real:- Se você não tiver acesso à solicitação real feita pelo aplicativo cliente, acesse Resolução.
- Se você tiver acesso à solicitação real feita pelo aplicativo cliente, execute a
etapas a seguir:
- Determine o valor transmitido ao cabeçalho da solicitação
Content-Encoding.
- Se o valor transmitido ao cabeçalho da solicitação
Content-Encoding
não for um dos valores listados em Codificação compatível, a causa desse erro.Exemplo de solicitação:
curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: UTF-8" -X POST -d @request_payload.gz
O exemplo de solicitação acima envia o valor
"UTF-8"
para o cabeçalhoContent- Encoding
, que não é um Codificação com suporte no Apigee Edge. Portanto, a solicitação falha com o erro415 Unsupported Media Type
, que contém o código de erro:protocol.http.UnsupportedEncoding
.
- Determine o valor transmitido ao cabeçalho da solicitação
Resolução
- Consulte a lista de codificação com suporte da Apigee em Codificação compatível.
- Verifique se o aplicativo cliente sempre envia o seguinte:
- Somente a codificação compatível como o valor do cabeçalho
Content-Encoding
em a solicitação - O payload da solicitação no formato compatível para o Apigee Edge e corresponde ao formato
especificado no cabeçalho
Content-Encoding
- Somente a codificação compatível como o valor do cabeçalho
No exemplo acima, o payload da solicitação tem uma extensão
gz
que indica que o conteúdo precisa sergzip
. Para corrigir o problema, envie o cabeçalho da solicitação comoContent-Encoding: gzip
e o payload da solicitação no formatogzip
:curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: gzip" -X POST -d @request_payload.gz
Causa: codificação sem suporte na resposta
Diagnóstico
- Determine o código da falha e a fonte da falha do erro observado usando a API do Monitoring, da ferramenta Trace ou do NGINX, conforme explicado em Etapas comuns de diagnóstico.
- Se a Origem da falha tiver o valor
target
, isso indica que o a resposta enviada pelo servidor de back-end contém codificações sem suporte noContent-Encoding
. - É possível determinar o valor de codificação não compatível passada como parte da resposta HTTP do
o servidor de back-end usando um destes métodos:
Mensagem de erro
Usar a mensagem de erro:Se você tiver acesso à mensagem de erro completa recebida do Apigee Edge, consulte o
faultstring
. Ofaultstring
contém o valor do sem suporte.Exemplo de mensagem de erro:
"faultstring":"Unsupported Encoding \"UTF-8\""
-
Na mensagem de erro acima, observe que o valor da codificação não compatível é
“UTF-8”
, conforme mostrado emfaultstring
.Como
“UTF-8”
não é uma codificação compatível com o Apigee Edge, este A solicitação falha com o erro415 Unsupported Media Type
com o código de erro:protocol.http.UnsupportedEncoding
Ferramenta Trace
Como usar o Trace:- Se você não tiver o rastreamento da solicitação com falha, acesse Resolução.
- Se você capturou um rastro da falha, pode determinar os arquivos
codificação transmitida pelo servidor de back-end como parte da resposta
Content-Encoding
conforme explicado na Ferramenta de rastreamento.
Resolução
- Consulte a lista de codificação com suporte da Apigee em Codificação compatível
- Verifique se o servidor de back-end sempre envia o seguinte:
- Somente a codificação compatível como o valor da
Cabeçalho
Content-Encoding
na solicitação - O payload de resposta no formato compatível com o Apigee Edge e corresponde ao formato
especificado no cabeçalho
Content-Encoding
- Somente a codificação compatível como o valor da
Cabeçalho
Codificação com suporte
A tabela a seguir lista o formato de codificação compatível com o Apigee Edge:
Cabeçalho | Codificação | Descrição |
---|---|---|
Content-Encoding |
gzip |
O formato Unix gzip |
deflate |
Esse formato usa a estrutura zlib com o algoritmo de redução de compactação. |
Especificação
A Apigee responde com a resposta de erro 415 Unsupported Media Type
conforme o
seguinte especificação RFC:
Especificação |
---|
RFC 7231, seção 6.5.13: tipo de mídia 415 incompatível |
Pontos principais a observar
Observe o seguinte:
- Se o erro
415
for retornado pela Apigee devido à transmissão sem suporte da codificação o cabeçalhoContent-Encoding
como parte da solicitação da API, em seguida:- Não será possível capturar o rastro para essas solicitações.
-
Você não poderá modificar o formato ou o conteúdo da resposta de erro enviada pelo Apigee Edge usando as políticas, como ElevateFault eAssignMessage.
Isso ocorre porque esse erro ocorre em uma fase inicial no processador de mensagens antes política possa ser executada.
- Se o erro
415
for retornado pela Apigee devido à transmissão sem suporte da codificação no cabeçalho de resposta do servidor de back-end, ele terá que ser corrigido em no servidor de back-end para evitar esse erro. Trabalhe com sua equipe de back-end conforme apropriado para corrigir esse problema.
Se você ainda precisar de ajuda do suporte do Apigee Edge, Acesse É necessário coletar informações de diagnóstico.
É necessário coletar informações de diagnóstico
Se você ainda precisar de ajuda do suporte da Apigee, reúna as seguintes informações: informações de diagnóstico e entre em contato com o suporte do Apigee Edge:
Se você for um usuário da nuvem pública, forneça as seguintes informações:
- Nome da organização
- Nome do ambiente
- Nome do proxy da API
- Comando
curl
completo usado para reproduzir o erro415
- Arquivo de rastreamento para as solicitações de API
Se você for um usuário da nuvem privada, forneça estas informações:
- Mensagem de erro completa observada para as solicitações com falha
- Nome do ambiente
- Pacote de proxy de API
- Arquivo de rastreamento para as solicitações de API
Registros de acesso do NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
Onde:ORG, ENV e PORT# são substituídos por valores reais.
- Registros do sistema do processador de mensagens
/opt/apigee/var/log/edge-message- processor/logs/system.log