朝活150日目 CORSポリシー
エラーが出てた。
何となく?
ぼやっとしか理解できてなかったので質問
私の認識が合っているか教えてください。
今CORSポリシーによる制約を受けているのは、フロントから直接APIにリクエストを投げているから。これはfetchTideData.tsはブラウザに読み込まれて、フロントエンドのサーバではなくブラウザから叩かれている。その為ポリシー制約を受ける。
示してもらっている方法は、バックエンドのサーバからたたきに行っているので、CORSポリシーを回避できる。
これはcurlを叩いているような状態ですか?
はい、あなたの理解は正確です。ここでのキーとなる点を確認しましょう:
1. **フロントエンドから直接APIを叩く問題**:
- フロントエンドのコード(Reactなど)はブラウザで実行されます。ブラウザはセキュリティの一環としてCORS(Cross-Origin Resource Sharing)ポリシーを実施しています。これは、フロントエンドのオリジン(例えば `localhost:3000`)と異なるオリジン(APIのホスト)へのリクエストを制限するものです。これにより、異なるオリジンからのリソースを無制限に取得することができなくなります。
2. **バックエンドサーバーからAPIを叩くメリット**:
- バックエンドサーバー(Node.js等)からAPIリクエストを行う場合、このCORSポリシーの影響を受けません。サーバーからサーバーへの通信はCORSポリシーの制約を受けないため、任意の外部APIからデータを自由に取得できます。これは、コマンドラインからcurlコマンドを使用する場合と似ています。
3. **プロキシサーバーとしてのバックエンドの役割**:
- バックエンドサーバーはプロキシとして機能し、フロントエンドのリクエストを受け取って外部APIに転送し、そのレスポンスをフロントエンドに返す役割を果たします。これにより、フロントエンドはCORSの制約を回避しつつデータを安全に取得できます。
したがって、提案された構成では、バックエンドサーバーが中継点となり、セキュリティリスクを抑えつつAPIからデータを取得できるようになります。これは開発において一般的に採用される安全なアプローチです。
あねー
あのセキュリティの分厚い本で読んだ気がする…
今はモニターが低すぎるから、少し高くするために台座としての仕事をしてるから、引っ張り出してまた復習してみようかなぁー
今日は出社日なのでここまでー
この記事が気に入ったらサポートをしてみませんか?