Você está vendo a documentação do Apigee Edge.
Acesse a
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 resposta a chamadas de API.
Mensagem de erro
O aplicativo cliente recebe este código de resposta:
HTTP/1.1 415 Unsupported Media Type
Além disso, talvez você veja uma mensagem de erro semelhante à mostrada abaixo:
{ "fault":{ "faultstring":"Unsupported Encoding \"UTF-8\"", "detail":{ "errorcode":"protocol.http.UnsupportedEncoding" } } }
Causas possíveis
Esse erro vai ocorrer se o valor do cabeçalho Content-Encoding
especificado na
solicitação HTTP enviada pelo cliente para a Apigee ou na resposta HTTP enviada pelo servidor de back-end à
Apigee não tiver a
codificação com suporte, conforme a especificação
RFC 7231, seção 6.5.13: 415 tipo de mídia incompatível (em inglês).
As possíveis causas para esse erro são as seguintes:
Causa | Descrição | Instruções de solução de problemas aplicáveis para |
---|---|---|
Codificação não compatível usada na solicitação | O cabeçalho da solicitação Content-Encoding contém uma codificação que não é compatível
com o Apigee Edge. |
Usuários de nuvens públicas e privadas de borda |
Codificação não compatível usada na resposta | O cabeçalho de resposta do servidor de back-end Content-Encoding contém uma codificação
não compatível com o Apigee Edge. |
Usuários de nuvens públicas e privadas de borda |
Etapas comuns do diagnóstico
Para diagnosticar o erro, você pode usar um dos seguintes métodos:
Monitoramento de APIs
Para diagnosticar o erro usando o monitoramento de APIs:
- Faça login na sua conta do Apigee Edge.
Alterne para a organização em que você quer investigar o problema:
- Navegue até a página Analisar > Monitoramento de API > Investigar.
- Selecione o período específico em que você observou os erros.
- Verifique se o filtro Proxy está definido como Todos.
- Trace o Código de falha em relação a Time.
Selecione uma célula com 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 mostradas abaixo:Clique em Ver registros e expanda uma das solicitações que apresentam falha com o erro
415
para ver mais informações:- Na janela Registros, observe os seguintes detalhes:
- Origem da falha:mostra que o erro é retornado por
apigee
outarget
. - Código de falha:precisa corresponder a
protocol.http.UnsupportedEncoding
.
- Origem da falha:mostra que o erro é retornado por
- Se a origem da falha 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 a resposta do servidor de back-end continha codificação não compatível no cabeçalhoContent-Encoding
.
Ferramenta de rastreamento
Para diagnosticar o erro usando a ferramenta Trace:
- Ative a
sessão de rastreamento e:
- Aguarde a ocorrência do erro
415 Unsupported Media Type
ou - Se você conseguir reproduzir o problema, faça a chamada de API para reproduzir o erro
415 Unsupported Media Type
.
- Aguarde a ocorrência do erro
Verifique se Mostrar todos os FlowInfos está ativado:
- Selecione uma das solicitações com falha e examine o rastro.
- Navegue pelas diferentes fases do rastro e localize onde a falha ocorreu.
Você vai encontrar o erro normalmente em um fluxo após a fase Solicitação enviada para o servidor de destino, conforme mostrado abaixo:
Observe o valor do erro do trace.
O trace de amostra acima mostra o erro como
Unsupported Encoding "utf-8"
. Como o erro é gerado pela Apigee depois que a solicitação é enviada ao servidor de back-end, ele indica que o servidor de back-end enviou o cabeçalho de respostaContent-Encoding
com o valor de"utf-8"
, que não é uma codificação compatível na Apigee.- Navegue até a fase AX (Dados do Analytics registrados) no rastreamento e clique nela.
Role para baixo até a seção Cabeçalhos de erro / resposta no painel Detalhes da fase e determine os valores de X-Apigee-fault-code e X-Apigee-fault-source, conforme mostrado abaixo:
Você verá os valores de X-Apigee-fault-code e X-Apigee-fault-source como
protocol.http.UnsupportedEncoding
etarget
, indicando que o erro foi causado porque o valor de codificação incompatível de"utf-8"
foi transmitido pelo servidor 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 o
encadeamento de proxy, ou seja, se o endpoint/servidor de destino está invocando outro
proxy na Apigee.
Para determinar isso, volte para a fase Solicitação enviada para o servidor de destino. Clique em Mostrar curl.
- A janela Curl for Request Sent to Target Server será aberta. Nela, é possível determinar o alias do host do servidor de destino.
- Se o alias de host do servidor de destino estiver apontando para um alias de host virtual, ele será encadeamento de proxy. Nesse caso, é necessário repetir todas as etapas acima para o proxy encadeado até
determinar o que está realmente causando o erro
415 Unsupported Media Type
. - Se o alias de host do servidor de destino apontar para o servidor de back-end, isso indica que o servidor de back-end está transmitindo a codificação sem suporte para a Apigee.
Registros de acesso do Nginix
Para diagnosticar o erro usando os 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 os erros HTTP
415
. Verifique os registros de acesso do NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_log
- Pesquise erros
415
durante uma duração específica (se o problema aconteceu anteriormente) ou se há alguma solicitação com falha com415
. Se você encontrar erros
415
com o X-Apigee-fault-code correspondente ao valor deprotocol.http.UnsupportedEncoding
, determine o valor de X-Apigee-fault-source.Exemplo de erro 415 do registro de acesso do NGINX:
A entrada de amostra acima do registro de acesso do NGINX 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 pode ter o valor
target
.
Causa: codificação incompatível na solicitação
Diagnóstico
- Determine o código de falha e a origem da falha do erro observado com os registros de acesso do Monitoring da API ou do NGINX, conforme explicado nas etapas comuns de diagnóstico.
- Se o Código de falha for
protocol.http.UnsupportedEncoding
e a Origem da falha tiver o valorapigee
ouMP
, isso indica que a solicitação enviada pelo aplicativo cliente contém codificação incompatível no cabeçalho da solicitaçãoContent-Encoding
. - É possível determinar o valor da codificação sem suporte que é transmitido como parte da solicitação HTTP
usando um dos métodos a seguir:
Mensagem de erro
Como usar a mensagem de erro:Se você tiver acesso à mensagem de erro completa recebida do Apigee Edge, consulte
faultstring
. Ofaultstring
contém o valor da codificação final não compatível.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 visto emfaultstring
.Como
“UTF-8”
não é uma codificação compatível com o Apigee Edge, essa 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, siga estas etapas:
- Determine o valor transmitido ao cabeçalho da solicitação
Content-Encoding.
. - Se o valor transmitido para o cabeçalho da solicitação
Content-Encoding
não for um dos valores listados em Codificação compatível, essa será a causa do erro.Exemplo de solicitação:
curl -v "https://HOSTALIAS/v1/testgzip" -H "Content-Encoding: UTF-8" -X POST -d @request_payload.gz
A solicitação de amostra acima envia o valor
"UTF-8"
para o cabeçalhoContent- Encoding
, que não é uma codificação compatível na Apigee Edge. Portanto, essa solicitação falha com415 Unsupported Media Type
erro com 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 aceita pela Apigee em Codificação compatível.
- O aplicativo cliente precisa sempre enviar o seguinte:
- Apenas a codificação compatível como o valor do cabeçalho
Content-Encoding
na solicitação - O payload de solicitação no formato compatível com o Apigee Edge e corresponde ao formato
especificado no cabeçalho
Content-Encoding
- Apenas 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 incompatível na resposta
Diagnóstico
- Determine o código de falha e a origem da falha do erro observado usando o monitoramento da API, a ferramenta de rastreamento ou os registros de acesso do NGINX, conforme explicado nas etapas comuns de diagnóstico.
- Se a origem da falha tiver o valor
target
, isso indica que a resposta enviada pelo servidor de back-end contém codificação não compatível no cabeçalhoContent-Encoding
. - É possível determinar o valor da codificação sem suporte que é transmitido como parte da resposta HTTP do servidor de back-end usando um dos métodos a seguir:
Mensagem de erro
Como usar a mensagem de erro:Se você tiver acesso à mensagem de erro completa recebida do Apigee Edge, consulte
faultstring
. Ofaultstring
contém o valor da codificação 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 visto emfaultstring
.Como
“UTF-8”
não é uma codificação compatível com o Apigee Edge, essa solicitação falha com o erro415 Unsupported Media Type
com o código de erro:protocol.http.UnsupportedEncoding
.
Ferramenta de rastreamento
Como usar o Trace:- Se você não tiver o trace da solicitação com falha, acesse Resolução.
- Se você capturou um rastro para a falha, poderá determinar a codificação
sem suporte transmitida pelo servidor de back-end como parte do cabeçalho de resposta
Content-Encoding
, conforme explicado na Ferramenta de rastreamento.
Resolução
- Consulte a lista de codificação aceita pela Apigee em Codificação compatível
- Verifique se o servidor de back-end sempre envia o seguinte:
- Apenas a codificação compatível como o valor do 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
- Apenas a codificação compatível como o valor do cabeçalho
Codificação compatível
A tabela a seguir lista o formato de codificação aceito pelo 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 compressão de desinflar. |
Especificação
A Apigee responde com a resposta de erro 415 Unsupported Media Type
de acordo com a
especificação RFC a seguir:
Especificação |
---|
RFC 7231, seção 6.5.13: 415 tipo de mídia incompatível (link em inglês) |
Pontos principais
Observe o seguinte:
- Se o erro
415
for retornado pela Apigee devido a uma codificação sem suporte transmitida no cabeçalhoContent-Encoding
como parte da solicitação de API:- Não será possível capturar o rastro para essas solicitações.
-
Não será possível modificar o formato ou o conteúdo da resposta de erro enviada pelo Apigee Edge usando as políticas, como IncreaseFault eAssignMessage.
Isso ocorre porque esse erro ocorre em uma fase inicial no processador de mensagens, antes que qualquer política possa ser executada.
- Se o erro
415
for retornado pela Apigee devido a uma codificação sem suporte transmitida no cabeçalho de resposta do servidor de back-end, ele precisa ser corrigido 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 Precisa de informações de diagnóstico.
É necessário coletar informações de diagnóstico
Se você ainda precisar de ajuda do suporte da Apigee, colete as seguintes 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 de API
- Completar o comando
curl
usado para reproduzir o erro415
- Arquivo de rastreamento das solicitações de API
Se você for um usuário da nuvem privada, forneça as seguintes informações:
- Concluir a mensagem de erro observada para as solicitações com falha
- Nome do ambiente
- Pacote de proxy de API
- Arquivo de rastreamento das 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