As transformações de cabeçalho não funcionam conforme esperado
Descubra como solucionar problemas de transformações de cabeçalho que não adicionam, substituem ou renomeiam cabeçalhos conforme esperado ao criar implantações de API com o serviço de Gateway de API.
Se o Gateway de API não adicionar, substituir ou renomear um cabeçalho conforme esperado, primeiro verifique se a configuração de rota e política disponibiliza o valor de contexto necessário para a transformação. A transformação também pode direcionar um cabeçalho protegido, produzir um valor de cabeçalho inválido ou usar uma definição ifExists que mantenha o valor de cabeçalho existente.
Sintomas do Problema
Você pode ver um ou mais dos seguintes sintomas:
- O serviço de back-end não recebe o cabeçalho que você espera que o Gateway de API adicione.
- O cabeçalho está presente, mas o valor está vazio ou inalterado.
- A transformação do cabeçalho parece estar configurada corretamente, mas a solicitação enviada ao serviço de back-end não inclui a alteração esperada do cabeçalho.
Possíveis Causas
Esse problema pode ter uma ou mais das seguintes causas:
- A rota usa uma política de autorização
ANONYMOUS; portanto, o Gateway de API não preenche valoresrequest.auth[...]para a rota. - A transformação do cabeçalho tenta modificar um cabeçalho de solicitação protegido ou um cabeçalho de resposta protegido que o Gateway de API não transforma.
- A expressão de transformação renderiza um valor inválido ou não produz um valor utilizável.
- A definição
ifExistsmantém o cabeçalho original inalterado.
Revisar a Configuração da Rota
Revise a rota que tratou a solicitação e verifique os seguintes detalhes:
- A solicitação correspondeu à rota esperada.
- A rota usa a definição
requestPolicies.authenticationesperada. - A rota inclui a transformação esperada na seção
requestPolicies.headerTransformationsou na seçãoresponsePolicies.headerTransformations. - A transformação só depende de
request.auth[...]quando a rota executa a autenticação. - O cabeçalho de destino não é um cabeçalho de solicitação protegido nem um cabeçalho de resposta protegido que o Gateway de API se recusa a transformar.
Se a transformação usar uma expressão como ${request.auth[access_token_claims][claim1]}, a rota deverá usar uma política de autorização que execute autenticação. Quando uma rota usa a política de autorização ANONYMOUS, o Serviço API Gateway não autentica a solicitação e não preenche os valores request.auth[...].
Revisar a Rota e os Logs
- Na Console, abra a implantação de API que tratou da solicitação.
- Verifique a rota correspondente, a política de autenticação e a política de transformação de cabeçalho.
- Envie a mesma solicitação novamente para criar um novo exemplo de falha.
- No OCI Logging, abra o log de acesso e o log de execução do Gateway de API para a implantação.
- Use o ID da solicitação da resposta para localizar a mesma solicitação nos dois logs.
- No log de execução, revise a solicitação de erros de transformação de cabeçalho.
Revisar Mensagens de Log
Verifique o log de execução da solicitação com falha. As seguintes entradas de log podem identificar por que o gateway de API ignorou ou rejeitou a transformação:
headerTransformation.protectedHeaderTransformed: A política tentou transformar um cabeçalho protegido.headerTransformation.badHeaderValue: O valor do cabeçalho renderizado continha caracteres não suportados ou era inválido.headerTransformation.missingSetValues: A expressão de transformação não produziu um valor válido; portanto, o API Gateway ignorou a atualização do cabeçalho.
Corrigir Transformações de Cabeçalho
Use a correção que corresponde à causa encontrada:
- Se a transformação depender de reivindicações de token, altere a rota para usar uma política de autorização autenticada, como
AUTHENTICATION_ONLY, em vez deANONYMOUS. - Se a solicitação depender de reivindicações de token, envie a solicitação novamente com um token válido e verifique se a validação do token foi bem-sucedida.
- Se a transformação atingir um cabeçalho protegido, atualize a política para usar outro cabeçalho.
- Se a expressão renderizar um resultado inválido ou vazio, atualize a expressão para que ela produza um valor de cabeçalho válido.
- Se o resultado aparecer inalterado, revise a configuração
ifExists.SKIPmantém um cabeçalho existente inalterado eAPPENDadiciona valores sem substituir o cabeçalho original.
Verificar Transformações de Cabeçalho
Depois de atualizar a rota ou a política, verifique se a transformação do cabeçalho funciona conforme esperado:
- Envie a mesma solicitação novamente.
- Verifique se o serviço de back-end recebe o cabeçalho e o valor esperados.
- Verifique se o log de execução não mostra os erros de transformação de cabeçalho descritos neste tópico.