CORS(Cross-Origin Resource Sharing、クロスオリジンリソース共有)は、ブラウザがクロスオリジンのサーバーにリクエストを送信することを許可するメカニズムで、ブラウザの同一オリジンポリシーの制限を克服します。
同一オリジンポリシーはブラウザのセキュリティ機能で、あるオリジンから読み込まれたドキュメントやスクリプトが別のオリジンのリソースとどのように相互作用できるかを制限します。「同一オリジン」とは、プロトコル、ドメイン名、ポート番号が同じであることを指します。
フロントエンドアプリケーションが異なるオリジンのAPIにアクセスする必要がある場合、CORSのサポートが必要です。例:
https://frontend.com
にデプロイされているhttps://api.backend.com
にデプロイされているCORSがない場合、ブラウザはフロントエンドアプリケーションがAPIサービスにアクセスするのをブロックします。
CORSは一連のHTTPヘッダーを通じてクロスオリジンアクセス制御を実現します:
ブラウザが Method::OPTIONS
のプリフライトリクエストを送信するため、この種のリクエストを処理する必要があり、CORSミドルウェアを Service
に追加する必要があります。
Salvoには組み込みのCORSミドルウェアが提供されており、簡単に設定して使用できます。以下はサンプルコードです:
注意.hoop(cors)ミドルウェアは Service
に対して作用します。.hoop(cors)ミドルウェアは Router
ではなく Service
に対して作用します。
これによりOPTIONSプリフライトが自動的に処理されます。
サンプルコード
CORSミドルウェアにはさまざまな設定オプションがあります:
CORSを適切に設定することで、セキュリティを確保しつつクロスオリジンアクセスの要件を満たすことができます。