Serverless framework & Express & APIGateway でCORS対応
Serverless framework & Express & APIGateway でCORS対応:
CORS(Cross-Origin Resource Sharing)問題は、ローカルで開発してるときにサーバで動いているAPIを叩こうとしたときに、Chrome等のWebブラウザでエラーになり怒られます。
この対処をすることで、ローカルでもAPIを叩くことが出来るので、
AWSのコンソールでポチポチせずに、CORS対応したかったのですが、中々ハマったのでメモ。
(実際には、CloudFrontの設定が必要なので、0ポチは無理でしたorz)
cors 対応するだけなら、trueに指定するだけなのですが、
ちなみに、
もし、API GatewayをCloudFront通さずに利用しているのであれば、この作業は不要です。
ここだけAWSのコンソールをいじります((泣)
API GatewayのBehaviorで
以上で設定は終了です!
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
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 ヘッダーだけ通します。以上で設定は終了です!
まとめ
- Serverlessでcors対応するなら、 cors: trueをするだけ
- express-on-serverlessを使うなら、1工夫しましょう
- CloudFrontを通してApi Gatewayを利用するなら、Originヘッダーを通しましょう。
コメント
コメントを投稿