web-dev-qa-db-ja.com

API Gateway機能のCORSを有効にできない

私は得る

enter image description here

API GatewayでCORSを有効にしようとしているときに、なぜこれを解決するのですか?これらの機能は、AWS SAMを使用してデプロイされます。ただし、AWS Consoleを使用して独自のAPIを作成すると、これも起こります

エラーは次のようになります。

  • 無効なモデル名が指定されましたapplication/json = Empty
  • 無効な応答ステータスコードが指定されました

「空の」応答モデルを自分で追加する必要があるようです。


今、私は得る

Access-Control-Allow-Origin統合応答ヘッダーマッピングをPOSTメソッドに指定します(無効な応答ステータスコードが指定されました)

どうすれば解決できますか?

13
Jiew Meng

まず、ルートリソースを選択し、[CORSを有効にする]を選択してください。すべてのメソッドに対してCORSが有効になります。理想的には動作するはずです。動作しない場合は、添付のスクリーンショットでマークしたように、応答に空のjsonを追加してください。 OPTIONSメソッド応答(Method Response)にデフォルトの応答ヘッダーが追加されていないと思います。スクリーンショットを参照してください

enter image description here

呼び出すメニューEmptyから新しいモデルを作成します。

empty model

6
MrLuje

API Gateway + LambdaでCORSの問題が発生し、上記の回答は役に立たなかったが、APIの応答コードにヘッダー情報を追加する必要があることがわかりました。

res.statusCodeと2つのヘッダーを追加する必要がありました。

// 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