web-dev-qa-db-fra.com

Impossible d'activer les fonctions CORS pour API Gateway

Je reçois

enter image description here

En essayant d'activer CORS sur API Gateway, pourquoi cela et comment puis-je résoudre ce problème? Ces fonctions sont déployées à l'aide d'AWS SAM. Mais je remarque que si je crée mes propres API via AWS Console, cela se produit également

Les erreurs ressemblent à:

  • nom de modèle non valide spécifié application/json = Vide
  • code d'état de réponse non valide spécifié

J'ai trouvé que je devais avoir besoin d'ajouter moi-même un modèle de réponse "vide"?


Maintenant, je reçois

Ajouter un mappage d'en-tête de réponse d'intégration Access-Control-Allow-Origin à POST (code d'état de réponse non valide spécifié)

Comment résoudre ça?

13
Jiew Meng

Veuillez d'abord sélectionner votre ressource racine et sélectionner "Activer CORS". Il permettra à CORS de toutes les méthodes. Idéalement, cela devrait fonctionner. Si au cas où cela ne fonctionne pas, veuillez ajouter un json vide dans la réponse comme je l'ai marqué dans la capture d'écran ci-jointe. Je crois que vous n'avez ajouté aucun en-tête de réponse par défaut dans votre réponse de méthode OPTIONS (dans Réponse de méthode). Veuillez vous référer à la capture d'écran

enter image description here

15

Créez un nouveau modèle dans le menu de gauche que vous appellerez Vide et cela fonctionne

empty model

6
MrLuje

J'ai eu un problème CORS avec API Gateway + Lambda et les réponses ci-dessus ne m'ont pas aidé, mais j'ai compris que je devais ajouter des informations d'en-tête à mon code de réponse dans mon API.

Je devais ajouter le res.statusCodeet les deux en-têtes.

// GET
// get all myModel
app.get('/models/', (req, res) => {
  const query = 'SELECT * FROM MyTable'
  pool.query(query, (err, results, fields) => {
    //...

    const models = [...results]
    const response = {
      data: models,
      message: 'All models successfully retrieved.',
    }
    //****** needed to add the next 3 lines
    res.statusCode = 200;
    res.setHeader('content-type', 'application/json');
    res.setHeader('Access-Control-Allow-Origin', '*');
    res.send(response)
  })
})
0
Ju66ernaut