web-dev-qa-db-fra.com

Définition de l'en-tête de réponse http à partir d'AWS lambda

Ma configuration API Gateway/Lamdba renvoie un en-tête de réponse http: Lamdba utilise la fonction de rappel pour renvoyer la valeur dans le cadre d'un json et la réponse d'intégration la mappe dans un en-tête (à l'aide de integration.response.body)

Avec cette solution, les valeurs sont renvoyées à la fois dans le corps et l'en-tête.

Comment mapper les en-têtes de la réponse Lambda sans dupliquer les valeurs dans le corps de la réponse?

18
Saar

Si vous avez l'intégration du proxy Lambda activée, vous pouvez définir les en-têtes de réponse dans le cadre de la sortie Lambda et API Gateway les renverra dans le cadre de la réponse HTTP à le client.

Exemple Node.js:

callback(null, {
    "isBase64Encoded": false, // Set to `true` for binary support.
    "statusCode": 200,
    "headers": {
        "header1Name": "header1Value",
        "header2Name": "header2Value",
    },
    "body": "...",
});

headers peut être null ou non spécifié si aucun en-tête de réponse supplémentaire ne doit être renvoyé.

Voir Format de sortie d'une fonction Lambda pour l'intégration du proxy .

33
Khalid T.

et, si vous NE PAS avez intégration du proxy Lamba activé, vous pouvez ajouter (et mapper) les en-têtes de réponse dans la console de passerelle Amazon API:

accédez aux ressources -> exécution de la méthode -> réponse de la méthode -> ajoutez l'en-tête "Access-Control-Allow-Origin" (ou autre) pour le statut http 200. Revenez ensuite à l'exécution de la méthode -> intégration de la méthode -> http status 200 -> définissez le mappage d'en-tête pour "Access-Control-Allow-Origin" sur "*" (ou autre).

Résolution de cette erreur ...: "Aucun en-tête" Access-Control-Allow-Origin "n'est présent sur la ressource demandée"

3
B0773N