1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

API GatewayのCORS許可に関するトラブルシュート

Last updated at Posted at 2019-10-16

いろいろハマったので参考程度に。

現象

  • API GatewayでCORSを許可したのに以下のようなエラーが出る
No 'Access-Control-Allow-Origin' header is present on the requested resource.
  • 他のAPIだと発生しないのに特定のAPIで発生する
  • curlで調べると正常に返却されている
  • 上記のエラーが解決しても、次はCORBエラーと言われる

検証&解決方法

まずは簡単なAPIを作って検証してみる

Lambdaで素のAPIだけ作ってGETとPOSTで繋いでCORS許可させてみる。
設定もコードもデフォルトのままでよい。
これで成功したらとりあえずブラウザ側に問題はなさそう。

APIをリソースから作り直してみる

これが意外と効くので、設定を保管しておくかメモっておくかして作り直すのも一つの手です。

設定をチェックする

以下、設定してあるメソッド(GET,OPTIONSなど)それぞれ全てチェックします。

統合レスポンス

まず統合レスポンスにAccess-Control-Allow-Originが設定されているか確認します。
私の場合、リソースを新たに作る時にCORS有効化にチェックを入れてリソースを作成し、その後メソッドを作ると上記が設定されておらず空になっていました。
逆にメソッドまで全て作成し、後からCORS有効化をすると自動で設定されていました。

スクリーンショット 2019-10-16 16.29.11.png

メソッドレスポンス

上記同様です。
なおここが空だと、CORBエラーになりレスポンスの値が返りません。

スクリーンショット 2019-10-16 16.29.30.png

以上です

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?