Las transformaciones de cabecera no funcionan como se esperaba

Descubra cómo solucionar problemas de transformaciones de cabecera que no agregan, sustituyen ni cambian el nombre de las cabeceras como se esperaba al crear despliegues de API con el servicio API Gateway.

Si API Gateway no agrega, sustituye o cambia el nombre de una cabecera como se esperaba, primero compruebe si la configuración de direccionamiento y política hace que el valor de contexto necesario esté disponible para la transformación. La transformación también puede dirigirse a una cabecera protegida, producir un valor de cabecera no válido o utilizar un valor ifExists que mantenga el valor de cabecera existente.

Emitir síntomas

Es posible que vea uno o más de los siguientes síntomas:

  • El servicio de backend no recibe la cabecera que espera que agregue API Gateway.
  • La cabecera está presente, pero el valor está vacío o sin cambios.
  • La transformación de cabecera parece estar configurada correctamente, pero la solicitud que se envía al servicio de backend no incluye el cambio de cabecera esperado.

Causas posibles

Este problema puede tener una o más de las siguientes causas:

  • La ruta utiliza una política de autorización ANONYMOUS, por lo que API Gateway no rellena los valores request.auth[...] para la ruta.
  • La transformación de cabecera intenta modificar una cabecera de solicitud protegida o una cabecera de respuesta protegida que API Gateway no transforma.
  • La expresión de transformación representa un valor no válido o no produce un valor utilizable.
  • La configuración ifExists mantiene la cabecera original sin cambios.

Revisión de la configuración de rutas

Revise la ruta que ha gestionado la solicitud y verifique los siguientes detalles:

  • La solicitud coincide con la ruta esperada.
  • La ruta utiliza el valor requestPolicies.authentication esperado.
  • La ruta incluye la transformación esperada en la sección requestPolicies.headerTransformations o la sección responsePolicies.headerTransformations.
  • La transformación depende de request.auth[...] solo cuando la ruta realiza la autenticación.
  • La cabecera de destino no es una cabecera de solicitud protegida ni una cabecera de respuesta protegida que API Gateway rechaza transformar.

Si la transformación utiliza una expresión como ${request.auth[access_token_claims][claim1]}, la ruta debe utilizar una política de autorización que realice la autenticación. Cuando una ruta utiliza la política de autorización ANONYMOUS, API Gateway no autentica la solicitud y no rellena los valores request.auth[...].

Revisión de la ruta y los logs

  1. En la consola, abra el despliegue de API que ha gestionado la solicitud.
  2. Revise la ruta coincidente, la política de autenticación y la política de transformación de cabecera.
  3. Vuelva a enviar la misma solicitud para crear un nuevo ejemplo de fallo.
  4. En OCI Logging, abra el log de acceso de API Gateway y el log de ejecución para el despliegue.
  5. Utilice el ID de solicitud de la respuesta para buscar la misma solicitud en ambos logs.
  6. En el log de ejecución, revise la solicitud de errores de transformación de cabecera.

Mensajes del registro de revisiones

Revise el log de ejecución para la solicitud fallida. Las siguientes entradas de log pueden identificar por qué el gateway de API ha omitido o rechazado la transformación:

  • headerTransformation.protectedHeaderTransformed: la política ha intentado transformar una cabecera protegida.
  • headerTransformation.badHeaderValue: el valor de cabecera representado contenía caracteres no soportados o no era válido.
  • headerTransformation.missingSetValues: la expresión de transformación no ha producido un valor válido, por lo que API Gateway ha omitido la actualización de cabecera.

Corregir transformaciones de cabecera

Utilice la corrección que coincida con la causa que ha encontrado:

  • Si la transformación depende de las reclamaciones de token, cambie la ruta para utilizar una política de autorización autenticada, como AUTHENTICATION_ONLY, en lugar de ANONYMOUS.
  • Si la solicitud depende de las reclamaciones de token, vuelva a enviar la solicitud con un token válido y verifique que la validación de token se realice correctamente.
  • Si la transformación tiene como destino una cabecera protegida, actualice la política para utilizar una cabecera diferente.
  • Si la expresión presenta un resultado no válido o vacío, actualice la expresión para que produzca un valor de cabecera válido.
  • Si el resultado no cambia, revise el valor ifExists. SKIP mantiene una cabecera existente sin cambios y APPEND agrega valores sin sustituir la cabecera original.

Verificar transformaciones de cabecera

Después de actualizar la ruta o la política, verifique que la transformación de cabecera funciona como se esperaba:

  • Vuelva a enviar la misma solicitud.
  • Verifique que el servicio de backend reciba la cabecera y el valor esperados.
  • Verifique que el log de ejecución no muestre los errores de transformación de cabecera descritos en este tema.