TL;DR
ブラウザが、異なるオリジンの間でリソースを共有するための仕組み。同一生成元ポリシーで制限される Cross-origin へのリクエストを、許可リスト形式で許可する。
仕組み
サーバは HTTP ヘッダを使って、どのオリジンからのリクエストを許可するかを指定する。レスポンスで使うヘッダには、次のものがある。
Access-Control-Allow-Origin: リクエストを許可するオリジンを、特定のオリジンか*で示す。Access-Control-Allow-Methods: 許可する HTTP メソッドを指定する。Access-Control-Allow-Headers: 許可するカスタム HTTP ヘッダを指定する。Access-Control-Allow-Credentials: Cookie などの認証情報を含むリクエストを許可するかを示す。
一方、リクエストでは Origin ヘッダでリクエスト元のオリジンを示す。