Quando as solicitações de API são feitas pelo Apigee Edge, os componentes do Apigee Edge, os roteadores e os processadores de mensagens, ou os servidores de
back-end, podem retornar erros aos aplicativos clientes.
Erros do processador de mensagens
O processador de mensagens é o componente principal do Apigee Edge que processa as políticas e
interage com os servidores de back-end. Ele pode retornar erros se detectar algum problema como:
Problemas de conectividade de rede, falhas no handshake do TLS, indisponibilidade do servidor de back-end, falta de resposta durante a comunicação com o servidor de back-end
Falhas durante a execução da política
Cabeçalhos HTTP inválidos, codificação, caminho, não conformidade com as especificações HTTP, excedendo
os limites de produtos etc.:
Com solicitação HTTP enviada pelos aplicativos cliente
OU
Com resposta HTTP enviada pelo servidor de back-end
E muito mais
Exemplo de erro do processador de mensagens
O Processador de mensagens sempre retorna um código de status HTTP seguido por uma mensagem de erro junto com um código de erro no formato JSON, conforme mostrado abaixo:
O aplicativo cliente recebe um código de resposta como o exemplo a seguir:
HTTP/1.1 414 Request-URI Too Long
Uma resposta de erro do Processador de mensagens aparece no seguinte formato:
Contém a mensagem de erro que descreve a possível causa do erro
errorcode
Código do erro (também conhecido como código de falha) associado ao
erro
Catálogo de erros de tempo de execução
Este catálogo de erros fornece todas as informações que você precisa saber sobre os códigos de erro de ambiente de execução (para erros sem política) retornados pelo componente processador de mensagens do Apigee Edge. Ele inclui as seguintes informações sobre cada código de erro:
Código de status HTTP
Mensagem de erro
Possíveis causas do erro
Todas as especificações HTTP associadas e/ou limites de produto
Manuais e vídeos que contêm instruções para diagnosticar a causa do erro e
soluções eficazes que podem ser aplicadas para resolver o erro por conta própria (quando disponível)
Corrija isso para corrigir o erro
As seguintes categorias de código de erro são abordadas:
Use a caixa Pesquisar abaixo para filtrar a tabela e exibir as informações acima para um código de erro específico. É possível pesquisar o código de status ou qualquer conteúdo em qualquer campo
na tabela.
searchPesquisa
Código do erro
Descrição
Corrigir
flow.*
flow.APITimedOut
Código de status HTTP:
504 Gateway Timeout
Mensagem de erro:
API timed out
Possível causa:
Este erro ocorre se:
O servidor de back-end não responde dentro do período de tempo limite configurado pela propriedade api.timeout para o proxy de API específico.
Uma política leva muito tempo devido a operações intensivas em termos de computação, carga alta
ou desempenho ruim.
Observação:este manual fornece instruções para solucionar problemas do código de erro
messaging.adaptors.http.flow.GatewayTimeout. No entanto, é possível usar
o mesmo manual para solucionar problemas do código de erro flow.APITimedOut.
A codificação especificada no cabeçalho de solicitação HTTP
Content-Encoding é válida e
aceita pelo Apigee Edge.
MAS
O formato de payload enviado pelo cliente como parte da solicitação HTTP não corresponde ao formato de codificação especificado no cabeçalho Content-Encoding.
A codificação especificada no cabeçalho de resposta HTTP
Content-Encoding do servidor de back-end/servidor de destino é válida e
compatível com o Apigee Edge.
MAS
O formato de payload enviado pelo servidor de back-end/destino como parte da resposta HTTP não corresponde ao formato de codificação especificado no cabeçalho Content-Encoding
A mensagem de erro e o formato podem variar dependendo da implementação do servidor de back-end.
Possível causa:
Esse erro ocorrerá se o servidor de back-end responder com o código
de status 504 ao Apigee Edge.
Observação: o código de erro
messaging.adaptors.http.flow.ErrorResponseCode não é retornado
como parte da mensagem de erro enviada aos aplicativos clientes. Isso ocorre
porque esse código de erro é definido pelo Apigee Edge sempre que o servidor de back-end
responde com um erro e qualquer um dos códigos de status
4XX ou 5XX. É possível ver esse código de erro no monitoramento da API, nos registros de acesso do NGINX ou no banco de dados de análise.
messaging.adaptors.http.flow.GatewayTimeout
Código de status HTTP:
504 Gateway Timeout
Mensagem de erro:
Gateway Timeout
Possível causa:
Esse erro ocorrerá se o servidor de back-end não responder
ao processador de mensagens do Apigee Edge dentro do
tempo limite de E/S configurado no processador de mensagens.
Esse erro ocorrerá se o cabeçalho Content-Length não for transmitido pelo
aplicativo cliente como parte das solicitações HTTP POST e PUT
enviadas ao Apigee Edge.
Observação: As solicitações com esse
erro não podem ser capturadas na ferramenta Trace, já que o processador de mensagens executa
essa validação em uma fase muito inicial, muito antes de processar a solicitação e
executar qualquer política no proxy de API.
Verifique se o aplicativo cliente sempre transmite o cabeçalho
Content-Length como parte das solicitações HTTP POST e
PUT enviadas para o Apigee Edge. Exemplo:
curl -X POST https://HOSTALIAS/PATH -d '{"name": "abc"}' -H "Content-Length: 15"
Mesmo que você esteja passando um payload vazio com solicitações POST e PUT, verifique se o cabeçalho Content-Length: 0 foi transmitido. Exemplo:
curl -X POST https://HOSTALIAS/PATH -H "Content-Length: 0"
messaging.adaptors.http.flow.NoActiveTargets
Código de status HTTP:
503 Service Unavailable
Mensagem de erro:
The Service is temporarily unavailable
Possível causa:
Esse erro ocorre em um dos seguintes cenários,
se você estiver usando o
TargetServer no Apigee Edge:
A resolução incorreta de DNS do host do servidor de back-end
pelo servidor de autorização personalizado resultou em endereços IP incorretos que levam a
erros de conexão.
Erros de tempo limite de conexão devido a:
A restrição do firewall no servidor de back-end impede
que o Apigee Edge se conecte ao servidor de back-end.
Problemas de conectividade de rede entre o Apigee Edge
e o servidor de back-end.
O host especificado no TargetServer está incorreto ou tem caracteres indesejados (como um espaço).
Esse erro ocorrerá se o processador de mensagens do Apigee Edge não receber o
payload da solicitação do aplicativo cliente durante o
tempo limite de E/S configurado no componente do processador de mensagens.
Corrigir
Verifique se o aplicativo cliente envia o payload da solicitação dentro do
tempo limite de E/S configurado no componente do processador de mensagens do Apigee Edge.
messaging.adaptors.http.flow.ServiceUnavailable
Código de status HTTP:
503 Service Unavailable
Mensagem de erro:
The Service is temporarily unavailable
Possível causa:
Esse erro ocorre em um dos seguintes cenários::
A resolução incorreta de DNS do host do servidor de back-end
pelo servidor de autorização personalizado resultou em endereços IP incorretos que levam
a erros de conexão.
Erros de tempo limite de conexão devido a:
A restrição do firewall no servidor de back-end impede
que o Apigee Edge se conecte ao servidor de back-end.
Problemas de conectividade de rede entre o Apigee Edge e
o servidor de back-end.
O host do servidor de destino especificado no endpoint de destino está incorreto ou tem caracteres indesejados, como espaço.
Esse erro também poderá ocorrer se o servidor de back-end fechar a conexão prematuramente enquanto o processador de mensagens ainda estiver enviando o payload da solicitação ao servidor de back-end.
Esse erro ocorrerá se o Apigee Edge não puder rotear a solicitação para nenhum dos
TargetEndpoints porque:
Não há uma condição de regra de rota (<RouteRule>) que
corresponda à solicitação em um proxy
AND
Não há uma regra de rota padrão definida no ProxyEndpoint
(ou seja, <RouteRule> sem condição)
Correção
Para resolver esse erro, siga estas instruções:
Revise as regras de rota definidas no ProxyEndpoint e modifique para garantir que
haja pelo menos uma condição de regra de rota que corresponda à sua solicitação.
É uma boa prática definir uma regra de rota padrão sem condição quando você tem várias RouteRules.
Certifique-se de que a regra de rota padrão esteja definida por último na lista
de rotas condicionais porque as regras são avaliadas de cima para baixo no ProxyEndpoint.
Para saber mais sobre como definir condições <RouteRule> em um ProxyEndpoint, consulte
Destinos condicionais.
messaging.runtime.SenseRaiseFault
Código de status HTTP:
403 Forbidden
Mensagem de erro:
Sense Fault
Possível causa:
Esse erro ocorrerá se uma solicitação de API for feita de um endereço IP de cliente específico,
bloqueado como parte das regras do Apigee Sense.
Se o endereço IP específico do cliente não estiver bloqueado, mas você ainda
receber esse erro, entre em contato com o suporte do Apigee Edge.
protocol.http.* - Caused due to bad request
protocol.http.BadFormData
Código de status HTTP:
500 Internal Server Error
Mensagem de erro:
Bad Form Data
Possível causa:
Esse erro ocorrerá se e somente se todas as condições a seguir forem satisfeitas:
A solicitação HTTP enviada pelo cliente para o Apigee Edge contém:
Content-Type: application/x-www-form-urlencoded,
e
Dados de formulário com o sinal de porcentagem (%) ou o sinal de porcentagem (%) seguido de caracteres hexadecimais inválidos que não são permitidos de acordo com
Forms: seção 17.13.4.1.
O proxy de API no Apigee Edge lê os parâmetros de formulário específicos que contêm caracteres não permitidos ao usar a política ExtractVariables ou AttributionMessage no fluxo de solicitação.
Esse erro vai ocorrer se um cabeçalho HTTP específico que não tem permissão para ter cópias
no Apigee Edge aparecer mais de uma vez com valores iguais ou diferentes como parte da
solicitação HTTP enviada pelo aplicativo cliente para o Apigee Edge.
Verifique se a solicitação HTTP enviada pelo aplicativo cliente para o Apigee Edge sempre contém um nome de cabeçalho válido de acordo com a
RFC 7230, seção 3.2: campos de cabeçalho (em inglês).
protocol.http.HeaderNameWithNonAsciiChar
Código de status HTTP:
400 Bad Request
Mensagem de erro:
Header {header_name} contains non ascii character {character}
Possível causa:
Esse erro vai ocorrer se o nome do cabeçalho enviado como parte da solicitação HTTP
pelo aplicativo cliente para o Apigee Edge contiver caracteres não ASCII.
Header {header_name} contains invalid character {character}
Possível causa:
Esse erro vai ocorrer se o nome do cabeçalho enviado como parte da solicitação HTTP
pelo aplicativo cliente para o Apigee Edge contiver caracteres inválidos, como
igual (=), vírgula (,), ponto e vírgula (;), tabulação, CRLF e caractere de nova linha.
Esse erro vai ocorrer se o caminho no URL de solicitação HTTP enviado pelo aplicativo cliente
para o Apigee Edge contiver caracteres não permitidos de acordo com a especificação
RFC 3986, seção 3.3: Caminho.
Verifique se o caminho no URL de solicitação HTTP enviado pelo aplicativo
cliente para o
Apigee Edge não contém caracteres não permitidos, conforme
de acordo com a RFC 3986, seção 3.3: caminho.
protocol.http.TooBigBody
Código de status HTTP:
413 Request Entity Too Large
Mensagem de erro:
Body buffer overflow
Possível causa:
Esse erro vai ocorrer se o tamanho do payload enviado pelo aplicativo cliente como parte da
solicitação HTTP para o Apigee Edge for maior que o limite permitido.
O tamanho total de todos os cabeçalhos de solicitação enviados pelo aplicativo
cliente como parte da solicitação HTTP para o Apigee Edge é maior do que o limite
permitido no Apigee Edge.
Esse erro ocorrerá se o tamanho da linha de solicitação enviada pelo aplicativo cliente
como parte da solicitação HTTP para o Apigee Edge for maior do que o limite permitido
no Apigee Edge.
Esse erro vai ocorrer se o cabeçalho Content-Encoding enviado pelo cliente
como parte da resposta HTTP tiver um formato de codificação/payload não
compatível com o Apigee Edge.
Este erro ocorrerá se o URL de solicitação do servidor de back-end, representado pela variável de fluxo target.url, contiver um caminho que começa com um ponto de interrogação (?) em vez de um encaminhamento barra (/), que é inválida.
Esse erro vai ocorrer se o cabeçalho HTTP específico que não tem permissão para ter cópias
no Apigee Edge aparecer mais de uma vez com valores iguais ou diferentes como parte da
resposta HTTP enviada pelo servidor de back-end para o Apigee Edge.
Verifique se a resposta HTTP enviada pelo servidor de back-end para o Apigee Edge sempre contém um nome de cabeçalho válido de acordo com a
RFC 7230, seção 3.2: campos de cabeçalho (em inglês).
protocol.http.EmptyPath
Código de status HTTP:
500 Internal Server Error
Mensagem de erro:
Request path cannot be empty
Possível causa:
Este erro ocorre se o URL de solicitação HTTP do servidor de back-end, representado pela variável de fluxo target.url, contiver um caminho vazio.
Header {header_name} contains non ascii character {character}
Possível causa:
Esse erro ocorrerá se o nome do cabeçalho enviado pelo servidor de back-end como parte da
resposta HTTP para o Apigee Edge
contiver caracteres não ASCII.
Header {header_name} contains invalid character {character}
Possível causa:
Esse erro ocorre quando o nome do cabeçalho enviado pelo servidor de back-end como parte da resposta HTTP contém caracteres inválidos, como igual (=), vírgula (,), ponto e vírgula (;), tab, CRLF e Nova linha.
Proxy refused to create tunnel with response status {status code}
Possível causa:
Esse erro ocorre durante a criação do túnel entre o Apigee Edge e o servidor de back-end pelo servidor proxy devido a problemas de firewall, Access Control List (Lista de controle de acesso), DNS, disponibilidade de disponibilidade do servidor de back-end etc.
Observação: o código de status na mensagem de erro
(faultstring) fornece a causa geral do problema.
Response Status code 306 is reserved, so can't be used.
Possível causa:
Esse erro ocorrerá se o servidor de back-end responder com
o código de status 306 ao Apigee Edge.
O código de status 306 foi definido em uma versão anterior da
especificação HTTP. De acordo com a especificação HTTP atual, esse código é
reservado e não pode ser usado.
Esse erro ocorrerá se a resposta HTTP do servidor de back-end para o Apigee Edge for
204 No Content ou
205 Reset Content, mas contiver o
corpo da resposta e/ou um ou mais dos cabeçalhos a seguir:
Esse erro vai ocorrer se o tamanho do payload enviado pelo aplicativo cliente como parte da
solicitação HTTP para o Apigee Edge for maior que o limite permitido.
Esse erro vai ocorrer se o tamanho total de todos os cabeçalhos de resposta enviados pelo
servidor de back-end como parte da resposta HTTP ao Apigee Edge for maior que o
limite permitido.
Esse erro ocorrerá se o tamanho da linha de resposta enviada pelo servidor de back-end como
parte da resposta HTTP para o Apigee Edge for maior do que o limite permitido no Apigee
Edge.
Esse erro vai ocorrer se o cabeçalho Content-Encoding enviado pelo
servidor de back-end como parte da resposta HTTP tiver o formato de codificação/payload
compatível com o Apigee Edge.
KeyAlias {KeyAlias_name} is not found in
Keystore {Keystore_Name}
Possível causa:
Esse erro ocorre se o KeyAlias específico referenciado no TargetEndpoint
ou TargetServer não for encontrado no Keystore específico.
Corrigir
Verifique se o KeyAlias especificado em TargetEndpoint ou TargetServer faz parte do Keystore específico.
security.util.TrustStoreWithNoCertificates
Código de status HTTP:
500 Internal Server Error
Mensagem de erro:
TrustStore {truststore_name} has no certificates
Possível causa:
Esse erro ocorre se o Truststore específico referenciado no TargetEndpoint ou
TargetServer não contiver nenhum certificado.
Correção
Se você quiser validar o certificado do servidor de back-end e
quiser usar o Truststore em um TargetEndpoint ou TargetServer, verifique se o Truststore contém os certificados válidos do servidor de back-end.