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 431 Request Header Fields Too
Large com o código de erro protocol.http.TooBigHeaders como resposta para a API
chamadas.
Mensagem de erro
O aplicativo cliente recebe o seguinte código de resposta:
HTTP/1.1 431 Request Header Fields Too Large
Além disso, você poderá encontrar a seguinte mensagem de erro:
{
"fault":{
"faultstring":"request headers size exceeding 25,600",
"detail":{
"errorcode":"protocol.http.TooBigHeaders"
}
}
}Causas possíveis
Esse erro ocorre se o tamanho total de todos os cabeçalhos de solicitação enviados pelo aplicativo cliente para O Apigee Edge como parte da solicitação HTTP é maior que o limite permitido no Apigee Edge de acordo com RFC 6585, seção 5: 431 Campos do cabeçalho da solicitação muito grandes.
Estas são as possíveis causas desse erro:
| Causa | Descrição | Instruções de solução de problemas aplicáveis para |
|---|---|---|
| O tamanho dos cabeçalhos de solicitação é maior que o limite permitido | O tamanho total de todos os cabeçalhos enviados pelo aplicativo cliente como parte da solicitação HTTP para O Apigee Edge é maior que o limite permitido. | Usuários de nuvem pública e privada de borda |
Etapas comuns do diagnóstico
Use uma das seguintes ferramentas/técnicas para diagnosticar esse erro:
Monitoramento de APIs
Para diagnosticar o erro usando a API Monitoring:
- Faça login na interface do Apigee Edge como usuário com um para o papel apropriado.
Alterne para a organização na qual você deseja investigar o problema.
- Navegue até o menu Analisar > Monitoramento de APIs > Investigar.
- Selecione o período específico em que você observou os erros.
- Compare Código de falha com Time.
- Selecione uma célula que tenha o código de falha
protocol.http.TooBigHeaderse código de status431, como mostrado abaixo:
Serão exibidas as informações sobre o código de falha
protocol.http.TooBigHeaders. conforme mostrado abaixo:
Clique em Ver registros e expanda a linha da solicitação com falha:
Na janela Registros, observe os seguintes detalhes:
- Código de status:
431 - Origem da falha:
apigee - Código da falha:
protocol.http.TooBigHeaders. - Tamanho da solicitação(bytes):
32150 (> 25 KB)
- Código de status:
- Se a Origem da falha tiver o valor
apigeeouMP, o O código da falha tem o valorprotocol.http.TooBigHeaderse O tamanho da solicitação é maior que 25 KB, o que indica que o tamanho total dos todos os cabeçalhos de solicitação enviados pelo aplicativo cliente como parte da solicitação HTTP maior do que limite permitido na Apigee.
Ferramenta Trace
NGINX
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
431. Verifique os registros de acesso do NGINX:
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logOnde:ORG, ENV e PORT# são substituídos por valores reais.
- Pesquise se há erros
431durante um período específico (se o problema tiver acontecido no passado) ou se houver alguma solicitação que ainda esteja falhando com431: Se você encontrar erros
431no X-Apigee-fault-code correspondente ao valor deprotocol.http.TooBigHeaders, em seguida, determine o valor de X-Apigee-fault-source.
O exemplo de entrada do registro de acesso do NGINX acima tem os seguintes valores para X-Apigee-fault-code e X-Apigee-fault-code
Cabeçalhos de resposta Valor X-Apigee-fault-code protocol.http.TooBigHeadersX-Apigee-fault-source MPObserve o tamanho da solicitação:
40159(40 KB é maior que 25 KB, o limite permitido para cabeçalhos de solicitação na Apigee Edge)No exemplo de entrada de registro acima, X-Apigee-fault-source tem o valor
apigeeouMP, o X-Apigee-fault-code terá o valorprotocol.http.TooBigHeaderse o Comprimento da solicitação é de 40 KB, que é maior do que o limite permitido na Apigee - 25 KB. Isso indica claramente que o Tamanho total de todos os cabeçalhos de solicitação enviados pelo aplicativo cliente como parte do HTTP solicitação excedeu o limite permitido de 25 KB no Apigee Edge.
Causa: o tamanho dos cabeçalhos da solicitação é maior que o limite permitido
Diagnóstico
- Determine o Código da falha, a Origem da falha e o Tamanho da solicitação-Comprimento do observado ao usar os registros de monitoramento da API ou de acesso do NGINX, conforme explicado em Etapas comuns de diagnóstico.
- Se a Origem da falha tiver o valor
apigeeouMP, o Código da falha tem o valorprotocol.http.TooBigHeaders, e o Comprimento da solicitação for superior a 25 KB, este indica que o tamanho da solicitação enviada pelo aplicativo cliente à Apigee é maior que o limite permitido no Apigee Edge. - É possível confirmar que o tamanho dos cabeçalhos da solicitação excedeu o limite permitido de 25 KB usando um dos
os seguintes métodos:
Mensagem de erro
Para validar usando a mensagem de erro:
Se você tiver acesso à mensagem de erro completa recebida do Apigee Edge, consulte o
faultstring. Ofaultstringindica o tamanho total dos cabeçalhos das solicitações excedeu o limite permitido de 25 KB.Exemplo de mensagem de erro:
"faultstring":"request headers size exceeding 25,600"
Solicitação real
Para validar usando a solicitação real:
Se você tiver acesso à solicitação real feita pelo aplicativo cliente, Depois, siga estas etapas:
- Verifique o tamanho dos cabeçalhos transmitidos na solicitação.
Se você achar que o tamanho total dos cabeçalhos é maior do que limite permitido no Apigee Edge, isso será a causa do problema.
Exemplo de solicitação:
curl -v https://HOSTALIAS/test -H "header0: 000000000000000000……..000000<trimmed>" -H "header1: 111111111111111111……..111111<trimmed>" -H "header2: 222222222222222222……..222222<trimmed>"-H "header3: 333333333333333333……..333333<trimmed>"
No caso acima, o tamanho total dos cabeçalhos
header0,header1eheader2. eheader3for maior que 25 KB, ou seja, ele contém mais de 25 mil caracteres ASCII (bytes).Se você estiver usando outro cliente, revise os registros dele e tente descobrir o tamanho da linha de solicitação enviada ao Apigee Edge.
Registros do processador de mensagens
Para validar usando registros do processador de mensagens:
Se você for um usuário da nuvem privada, poderá usar os registros do processador de mensagens para validar se o tamanho dos cabeçalhos de solicitação excedeu o limite permitido no Apigee Edge.
Verifique os registros do processador de mensagens:
/opt/apigee/var/log/edge-message-processor/logs/system.log- Pesquise se há algum erro
431durante uma duração (se o problema aconteceu no passado) ou se há alguma solicitação ainda falha com431. Você pode usar as seguintes strings de pesquisa.grep -ri "exceeding"
grep -ri "RequestHeadersTooLarge"
- Você vai encontrar linhas de
system.logsemelhantes às seguintes:2021-07-27 08:30:28,419 NIOThread@1 ERROR ADAPTORS.HTTP.FLOW - AbstractRequestListener.onException() : Request:GET, uri:/test/, message Id:null, exception:com.apigee.errors.http.user.RequestHeadersTooLarge{ code = protocol.http.TooBigHeaders, message = request headers size exceeding 25,600, associated contexts = []}, context:Context@9c5903 input=ClientInputChannel(SSLClientChannel[Accepted: Remote:192.168.205.251:8443 Local:192.168.67.23:22188]@25130 useCount=1 bytesRead=0 bytesWritten=15367 age=667062ms lastIO=0ms isOpen=true)
O texto
message = request headers size exceeding 25,600na a mensagem de erro acima indica que o tamanho total dos cabeçalhos de solicitação é maior que 25 KB. Portanto, o Apigee Edge gera a exceçãocom.apigee.errors.http.user.RequestHeadersTooLargee retorna Código de status431com código de falhaprotocol.http.TooBigHeaderspara aplicativos clientes.
Resolução
Corrigir tamanho
Opção 1 [recomendada]: corrija o aplicativo cliente para não enviar cabeçalhos de solicitação com o tamanho total é maior que o limite permitido
- Analise o motivo pelo qual o cliente específico enviou o cabeçalho da solicitação com tamanho o que faz com que o tamanho total do cabeçalho seja maior do que o limite permitido, conforme definido em Limites.
Se não for desejável, modifique seu aplicativo cliente para que ele envie Cabeçalhos de solicitação com tamanho menor que o limite permitido.
No exemplo discutido acima, você pode corrigir o problema passando o cabeçalho longo como parte do corpo/payload da solicitação:
curl -v https://HOSTALIAS/test -d '{ "header0: 000000000000000000……..000000<trimmed>" , "header1: 111111111111111111……..111111<ttrimmed>" , "header2: 222222222222222222……..222222<ttrimmed>", "header3: 333333333333333333……..333333<ttrimmed>" }'- Se for desejável e você quiser enviar um cabeçalho além do limite permitido, vá para o próxima opção.
CwC
Opção 2 : usar a propriedade CwC para aumentar o limite de linha de solicitação
A Apigee oferece um CwC, que permite aumentar o limite de tamanho da linha de solicitação. Para mais detalhes, consulte Definir o limite de linhas de solicitação no processador de mensagens
Limites
A Apigee espera que o aplicativo cliente e o servidor de back-end não enviem Cabeçalhos de solicitação/resposta com tamanhos maiores que o limite permitido conforme documentado para o limite de tamanho do cabeçalho de solicitação/resposta em Limites do Apigee Edge.
- Se você é um usuário da nuvem pública, o limite máximo de O tamanho dos cabeçalhos de solicitação e resposta está documentado em Tamanho do cabeçalho de solicitação/resposta em Limites do Apigee Edge.
- Se você for um usuário da nuvem privada , talvez tenha modificado o valor máximo padrão limite para o tamanho dos cabeçalhos de solicitação e resposta (mesmo que não seja uma prática recomendada). É possível determinar o limite máximo de tamanho do cabeçalho da solicitação seguindo as instruções em Como verificar o limite atual
Como verificar o limite atual?
Nesta seção, explicamos como verificar se a propriedade HTTPRequest.headers.limit
foi atualizada com um novo valor nos processadores de mensagens.
- Na máquina do processador de mensagens, pesquise a propriedade
HTTPRequest.headers.limitno diretório/opt/apigee/edge-message-processor/confe verificar veja qual valor foi definido conforme mostrado abaixo:grep -ri "HTTPRequest.headers.limit" /opt/apigee/edge-message-processor/conf
- O resultado de amostra do comando acima é o seguinte:
/opt/apigee/edge-message-processor/conf/http.properties:HTTPRequest.headers.limit=25k
No exemplo de saída acima, observe que a propriedade
HTTPRequest.headers.limitfoi definido com o valor25knohttp.properties.Isso indica que o limite do tamanho do cabeçalho de solicitação configurado na Apigee para particular Google Cloud tem 25 KB.
Especificação
O Apigee Edge espera que o aplicativo cliente não envie cabeçalhos de tamanho grande como parte do
solicitação. Caso a solicitação contenha cabeçalhos com tamanho total acima do limite especificado,
A Apigee gera 431 Request Header Fields Too Large de acordo com o RFC a seguir.
especificações:
| Especificação |
|---|
| RFC 6585, seção 5: 431 Campos do cabeçalho da solicitação muito grandes |
Se você ainda precisar de ajuda do suporte da Apigee, acesse É necessário coletar informações de diagnóstico.
É necessário coletar informações de diagnóstico
Colete as informações de diagnóstico a seguir 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
curlcompleto usado para reproduzir o erro431 - 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 da organização
- Nome do ambiente
- Pacote de proxy de API
- Arquivo de rastreamento das solicitações de API com falha
- Comando
curlcompleto usado para reproduzir o erro431 Registros de acesso do NGINX
/opt/apigee/var/log/edge-router/nginx/ORG~ENV.PORT#_access_logOnde: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