2 votes

Comment passer outre CORS en utilisant la passerelle API AWS et Lambda ?

J'ai actuellement une fonction Lambda qui fonctionne lorsque je la teste (il s'agit d'une intégration Mailchimp pour inscrire un utilisateur à une liste).

Voir ma fonction lambda ici sur Github

J'ai créé un point de terminaison API en utilisant la passerelle API par lambda.

Cependant, lorsque je le teste sur mon application (actuellement via localhost:3000), j'obtiens une erreur CORS de la passerelle API :

Access to XMLHttpRequest at 'https://MY_API.execute-api.us-west-2.amazonaws.com/default/mailchimp-lambda' from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

J'ai essayé plusieurs choses :

  1. Ajouter le paquet middy de npm comme recommandé sur https://serverless.com/blog/cors-api-gateway-survival-guide/
  2. Utiliser un callback en lambda et ajouter CORS comme recommandé sur cette question : Configurer les en-têtes de réponse CORS sur AWS Lambda ?

Quelqu'un peut-il expliquer comment accéder à une fonction lambda ?

0voto

Tomasz Czechowski Points 484

Si vous utilisez le LAMBDA-PROXY ce qui signifie que votre réponse a besoin de l'en-tête Access-Control-Allow-Origin.

Voici l'exemple de la fonction :

exports.handler = async (event) => {
    const response = {
        statusCode: 200,
        headers: {
            "Access-Control-Allow-Origin" : "*" // Required for CORS
        },
        body: JSON.stringify('Hello from Lambda!!'),
    };
    return response;
};

Vous trouverez ici plus de détails sur un problème similaire : https://github.com/serverless/serverless/issues/1955

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X