J'essaye de faire une requête HTTP depuis une application angularjs vers une fonction lambda que j'ai configurée en utilisant serverless.Serverless AWS Lambda CORS Erreur
Voici ma fonction serverless.yaml
functions:
createcustomer:
handler: handler.createcustomer
events:
- http: post /createcustomer
cors: true
Créer une fonction client
module.exports.createcustomer = (event, context, callback) => {
let customer = JSON.parse(event.body).customer;
service.create(customer, function(result) {
let response = {
statusCode: 200,
headers: {
"Access-Control-Allow-Credentials": true,
"Access-Control-Allow-Origin": "*",
"Content-Type": "application/json",
},
body: JSON.stringify({
result: 'Created Customer Successfully',
message: 'The account has been created!',
type: 'success',
customer: result
})
};
callback(null, response);
});
};
De mon app AngularJS Je l'appelle comme ça
app.factory('MyFactory', ['$http', function($http) {
return {
CreateCustomer: function(customer) {$http.post('<apipath>/createcustomer', {customer:customer})}
}
}]);
Cependant, je continue à obtenir cette erreur:
Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin ' http://localhost:5000 ' is therefore not allowed access. The response had HTTP status code 403.
J'ai essayé d'activer CORS dans la passerelle API sur la méthode POST, mais cela n'a pas changé le résultat.
J'ai aussi essayé d'installer CORS dans le fichier YAML explicitement
functions:
createcustomer:
handler: handler.createcustomer
events:
- http: post /createcustomer
cors:
origin: '*'
Toujours pas de chance.
Est-ce que quelqu'un sait ce que je fais mal ici?
Une chose étrange est que je pourrais obtenir le poste fonctionne très bien via PostMan, mais si je l'essaie à travers mon application, il se brise.
Merci
MISE À JOUR
Quand je fais serverless deploy
il apparaît dans AWS comme l'image ci-dessus et la méthode ressemble à ceci
Comme je l'ai dit avant, j'ai essayé d'activer CORS directement à partir de la console API Gateway, mais Il n'y avait pas de différence quand j'ai essayé d'appeler la méthode.
Essayez en ajoutant l'en-tête Access-Control-Allow-Headers dans la réponse lambda. –
@KaustubhKhare essayé, toujours pas de chance. – DevShadow
On dirait bien sur ce que vous avez posté. Je vérifie la console API Gateway et la console Lambda pour vérifier si ces paramètres sont réellement reflétés et déployés correctement. – dashmug