0

J'utilise API Gateway pour découpler mon backend Tomcat dans Elastic BeansTalk mais j'ai des problèmes pour obtenir les réponses de l'API.AWS API Gateway - Proxy HTTP pour les beans élastiques Talk ne pas Passthrough réponses

La demande d'intégration fonctionne correctement lorsque j'essaie de tester l'utilisation de la console API Gateway. Il fonctionne aussi bien dans le backend. Je fais la demande en utilisant le point de terminaison API et vérifie les logs du serveur et il donne la réponse attendue 200.

Mais lorsque la passerelle API envoie la réponse à l'agent, elle ne peut pas être analysée dans un client. J'ai essayé d'utiliser des navigateurs Web, des outils de test d'API et des clients mobiles (iOS). Dans chaque cas, l'agent dit qu'il "ne peut pas décoder les données brutes"! J'ai vérifié l'extrémité en utilisant curl et cela fonctionne bien. En comparant les réponses des API Gateway et Elastic BeansTalk, la seule différence est que dans la réponse API Gateway, la taille du contenu informée est plus longue d'un octet. En faisant des recherches, certaines personnes sur le web ont trouvé le même problème, avec différents services backend et différents agents. Par exemple, here quelqu'un parle du même problème qui se produit lorsque Safari essaie d'accéder à Flickr. Dans la réponse à cette question, quelqu'un a dit que le problème est lié à l'en-tête Http Via inséré par le serveur.

J'ai vérifié les en-têtes de réponse de API Gateway et en effet, il y a un en-tête Via informant que la réponse a été servie par Cloudfront. J'ai cherché des options pour désactiver cette option pour tester si c'est le problème. Mais n'a pas trouvé!

Alors .. mes questions sont:

  1. Quelqu'un a ou a eu le même problème?
  2. Quelqu'un peut me dire si le problème est lié à l'en-tête Via Http? Est-il possible de désactiver cet en-tête dans API Gateway?
  3. En cas de oui, comment ??
+0

Utilisez-vous le SDK généré par iOS à partir d'API Gateway? –

+0

Non !! J'utilise les objets de session http du paquet foundation. J'ai eu d'énormes problèmes avec iOS sdk et abandonner juste ... principalement liés à Cognito ... –

Répondre

0

Puis-je désactiver cet en-tête dans la passerelle API? En cas de oui, comment ??

Malheureusement, vous ne pouvez pas désactiver l'en-tête. Si vous utilisez le type de point de terminaison REGIONAL (au lieu de EDGE), les en-têtes Via ne seront pas ajoutés, mais vous perdrez également les avantages du point de terminaison EDGE.