

CORSとは?なぜ必要なのか?
CORS (Cross-Origin Resource Sharing) は、異なるドメイン間でのデータ共有を安全に可能にするWebセキュリティの仕組みです。通常、Webブラウザは同一オリジンポリシー (SOP) に基づき、同じドメインからのリクエストのみを許可しますが、CORSを利用すると、特定の条件下で他のドメインからのリクエストも許可できるようになります。
例えば、https://a.comのページが、https://b.comからデータを取得する場合、https://b.com側で「指定ドメインからのアクセスを許可する」というCORS設定を行うことで、データの共有が可能になります。この設定がないと、APIの利用や外部データとの連携ができないため、アプリやWebサイトの機能に制限がかかってしまいます。CORSは、Web APIとクライアント間でのデータ交換をスムーズにし、ユーザー体験を向上させるためにとても重要な機能です。

SOPに関してはこちらの記事でまとめています。

【Web開発者必読】同一オリジンポリシー(SOP)について
CORSエラーが発生する理由
CORSエラーは、異なるドメイン間のリクエストが許可されていない場合に発生します。例えば、https://a.comからhttps://b.comにデータをリクエストした際、https://b.com側でCORS設定がされていなければ、ブラウザはセキュリティ上の理由からリクエストをブロックします。これにより、以下のようなCORSエラーメッセージが表示されます
「Access to fetch at ‘https://b.com’ from origin ‘https://a.com’ has been blocked by CORS policy.」
上記の様にCORSポリシーが原因でhttps://a.comからのリクエストが拒否されていることをブラウザが教えてくれます。つまり、他のドメインからのデータ取得が制限されているため、APIや外部サービスを利用する際に支障が出ることがあります。CORSエラーを回避するためには、サーバー側で適切な設定を行う必要があります。
CORSエラーの解決方法
サーバー管理者が、レスポンスヘッダーにAccess-Control-Allow-Originヘッダーを追加することで、特定のドメインからのリクエストを許可できます。また、Apacheサーバーを使用している場合、.htaccessファイルを編集してCORS設定を行うことも可能です。
まとめ
CORS(Cross-Origin Resource Sharing)は、異なるドメイン間での安全なデータのやり取りを可能にする仕組みです。同一オリジンポリシーによって通常は他のドメインからのリクエストがブロックされますが、CORSを設定することで特定のドメインからのアクセスを許可できます。これにより、WebアプリやAPIの連携がスムーズになり、ユーザー体験が向上します。
参考文献
CORS – MDN Web Docs 用語集: ウェブ関連用語の定義 | MDN
フロントエンド開発のためのセキュリティ入門 知らなかったでは済まされない脆弱性対策の必須知識