type
status
date
slug
summary
tags
category
icon
password
书籍
 

理論

CORSエラーの解決方法

CORS(クロスオリジンリソースシェアリング)エラーは、異なるドメイン間でリソースを共有しようとしたときに発生します。例えば、www.example.com という静的サイトから別のドメインのAPI(api.example.com)にリクエストを送る場合、ブラウザはセキュリティ上、リクエストをブロックします。

解決方法

CORSエラーを解決するためには、API側でリクエスト元ドメイン(例:www.example.com)を明示的に許可する設定を行う必要があります。これを行う方法は次の通りです:
  1. API Gateway でCORS設定を有効にし、Access-Control-Allow-Origin ヘッダーを設定する。
  1. Lambda関数のレスポンスで Access-Control-Allow-Origin ヘッダーを設定する。
  1. S3バケットにCORS設定を追加する(静的ウェブサイトホスティングの場合)。
これらの設定により、ブラウザはCORSエラーを解消し、リクエストを正常に処理できるようになります。
以下は、上記の内容を自然な日本語に訳したものです。

例として、前提のコードが以下のようになっています:
この場合、https://api.example.com のレスポンスヘッダーには、次のような情報が含まれている必要があります:
もしこのレスポンスヘッダーが含まれていない場合、ブラウザは前端のスクリプトがAPIのレスポンスデータにアクセスすることを拒否します。その結果、CORS(クロスオリジンリソースシェアリング)エラーが発生します。
 
 
  1. CloudFront
    1. CloudFrontがリクエストを適切なCORSヘッダーと共に転送するように設定します。CloudFrontはリクエストをオリジンサーバー(API GatewayやS3)に転送するだけなので、オリジンサーバーからの応答が正しいCORSヘッダーを含んでいることを確認する必要があります。
  1. API Gateway
    1. API GatewayでCORSを有効にし、レスポンスにAccess-Control-Allow-Origin: https://www.example.comを設定します。これにより、他のドメインからのリクエストが許可されるようになります。
  1. S3
    1. S3のCORS設定を構成し、www.example.comからのリクエストを許可します。S3にホストされている静的ウェブサイトのリソースに対して、他のドメインからのアクセスを許可するための設定です。
これらの設定を行うことで、CORSエラーを回避し、正しく跨域リクエストを処理できるようになります。

実践

一問道場

会社は、ユーザー向けの登録フォームを含む認証なしの静的ウェブサイト(www.example.com)を運営しています。このウェブサイトはAmazon S3でホスティングされ、コンテンツ配信ネットワークとしてAmazon CloudFrontを使用し、AWS WAFが設定されています。登録フォームが送信されると、ウェブサイトはAmazon API GatewayのAPIエンドポイントを呼び出し、AWS Lambda関数がペイロードを処理して外部APIに転送します。
テスト中、ソリューションアーキテクトはクロスオリジンリソースシェアリング(CORS)エラーに直面しました。ソリューションアーキテクトは、CloudFrontディストリビューションのオリジンにAccess-Control-Allow-Originヘッダーがwww.example.comに設定されていることを確認しました。
このエラーを解決するために、ソリューションアーキテクトは何をすべきでしょうか?
A. S3バケットのCORS設定を変更し、AllowedOrigin要素にwww.example.comのルールを追加する。
B. AWS WAFでCORS設定を有効にし、Web ACLルールでAccess-Control-Allow-Originヘッダーをwww.example.comに設定する。
C. API Gateway APIエンドポイントでCORS設定を有効にし、APIエンドポイントが返すすべてのレスポンスにAccess-Control-Allow-Originヘッダーをwww.example.comに設定するように構成する。
D. Lambda関数でCORS設定を有効にし、関数の戻りコードにAccess-Control-Allow-Originヘッダーをwww.example.comに設定するようにする。

解説

正解は C です。

解説

CORSエラーは、異なるオリジン(ドメイン)間でリソースを共有する際に発生します。リクエストが送信されるサーバー(この場合はAPI Gateway)は、リクエスト元のオリジンを許可する必要があります。API Gatewayは、CORS(クロスオリジンリソース共有)を設定することで、他のオリジンからのリクエストを許可できます。
選択肢 C の内容は以下の通りです:
  • API GatewayでCORS設定を有効にする:API Gatewayエンドポイントが、リクエスト元のオリジンを許可する Access-Control-Allow-Origin ヘッダーを含むレスポンスを返すように設定します。これにより、ウェブサイトからAPI Gatewayを呼び出す際に、CORSエラーを解決できます。

他の選択肢が不正解な理由:

  • A:S3のCORS設定は静的コンテンツに関連しますが、API GatewayのCORS設定が問題の根本的な原因です。
  • B:AWS WAFはCORS設定を管理する機能を提供していません。CORSの設定はS3やAPI Gatewayで行います。
  • D:Lambda関数内ではCORS設定を行いません。CORS設定はAPI GatewayまたはS3側で行います。
従って、API GatewayでCORS設定を有効にするのが正解です。
相关文章
クラウド技術の共有 | AWS Site-to-Site
Lazy loaded image
EKSでのWordPressデプロイ:KCNA-JP試験対策 (Kubernetes実践編)
Lazy loaded image
初心者向け!コンテナ化WordPressサイト構築ガイド(超詳細版)
Lazy loaded image
EFSを活用!AWS EC2でDockerを使ったWordPressサイト構築
Lazy loaded image
529-AWS SAP AWS 「理論・実践・一問道場」VPCエンドポイント
Lazy loaded image
528-AWS SAP AWS 「理論・実践・一問道場」Migration Evaluator
Lazy loaded image
261-AWS SAP AWS 「理論・実践・一問道場」AWS IAM Identity Center259-AWS SAP AWS 「理論・実践・一問道場」EC2ログの管理
Loading...
みなみ
みなみ
一个普通的干饭人🍚
最新发布
35条書面-64問-1
2025年6月13日
TOKYO自習島
2025年6月10日
平成26年秋期 午後問1
2025年6月6日
令和5年秋期 午後問1
2025年6月6日
令和2年秋期 午後問1
2025年6月6日
業務上の規制-87問-1
2025年6月4日
公告

🎉 欢迎访问我的博客 🎉

🙏 感谢您的支持 🙏

📅 本站自 2024年9月1日 建立,致力于分享在 IT・MBA・不动产中介 等领域的学习与实践,并推动 学习会 的自主开展。
📖 博客语言使用比例
🇯🇵 日语 90% 🇨🇳 中文 8% 🇬🇧 英语 2%

📚 主要内容

💻 IT・系统与开发

  • 系统管理:Red Hat 等
  • 容器与编排:Kubernetes、OpenShift
  • 云计算:AWS、IBM Cloud
  • AI 入门:人工智能基础与实践
  • 技术笔记与考证经验

🏠 不动产 × 宅建士

  • 宅建士考试笔记

🎓 MBA 学习笔记

  • 管理学、经济学、财务分析等

🔍 快速查找内容(标签分类)

由于网站目前没有专门的设计,可能会导致查找信息不便。为了更快找到你感兴趣的内容,推荐使用以下标签功能 进行搜索!
📌 定期更新,欢迎常来看看!
📬 有任何建议或想法,也欢迎留言交流!