Serverless framework & Express & APIGateway でCORS対応

Serverless framework & Express & APIGateway でCORS対応:

CORS(Cross-Origin Resource Sharing)問題は、ローカルで開発してるときにサーバで動いているAPIを叩こうとしたときに、Chrome等のWebブラウザでエラーになり怒られます。

この対処をすることで、ローカルでもAPIを叩くことが出来るので、

AWSのコンソールでポチポチせずに、CORS対応したかったのですが、中々ハマったのでメモ。

(実際には、CloudFrontの設定が必要なので、0ポチは無理でしたorz)


環境

  • Serverless framework 1.20.2


Express側ですること

serverless.yml を以下のように編集します。

# serverless.yml 
functions: 
  app: 
    handler:index.handler 
    events: 
      - http: 
          path: /{proxy+} 
          method: any 
          cors: true 
cors 対応するだけなら、trueに指定するだけなのですが、 express-on-serverless を使いたかったがために、methodの設定に苦しみました。

ちなみに、 express-on-serverless の デフォルトの書き方だと、下記のようになっており、 http: any {proxy+} をどうにか別の書き方で書きつつ、 cors: true をしようとすると上記のようになります。

# serverless.yml 
functions: 
  app: 
    handler:index.handler 
    events: 
      http: any {proxy+} 


CloudFrontですること

もし、API GatewayをCloudFront通さずに利用しているのであれば、この作業は不要です。

ここだけAWSのコンソールをいじります((泣)

API GatewayのBehaviorで Origin ヘッダーだけ通します。


cloud.png


以上で設定は終了です!


まとめ

  • Serverlessでcors対応するなら、 cors: trueをするだけ
  • express-on-serverlessを使うなら、1工夫しましょう
  • CloudFrontを通してApi Gatewayを利用するなら、Originヘッダーを通しましょう。
以上です。ここまで、読んでくださりありがとうございました。

コメント

このブログの人気の投稿

投稿時間:2021-06-17 22:08:45 RSSフィード2021-06-17 22:00 分まとめ(2089件)

投稿時間:2021-06-20 02:06:12 RSSフィード2021-06-20 02:00 分まとめ(3871件)

投稿時間:2021-06-17 05:05:34 RSSフィード2021-06-17 05:00 分まとめ(1274件)