セキュリティ
中級

CORS(コルス)

Cross-Origin Resource Sharing・クロスオリジン制御。Access-Control-Allow-Origin/Methods/Headers/Credentialsヘッダ、preflight request(OPTIONS)・credentials: include対応、Fetch API・axios・SWR連携、Cloudflare Workers/Vercel Edge/Hono cors middleware・fastify-cors・@supabase/cors設定が2026年主流。

0 回閲覧
0 いいね
2026/4/25 更新
関連タグ
Access-Control
preflight
Hono cors
Fetch API

概要

CORS(Cross‑Origin Resource Sharing)は、ブラウザが別オリジンのリソースへアクセスする際に、サーバ側が許可を与える仕組みです。
サーバは Access‑Control‑Allow‑Origin、Access‑Control‑Allow‑Methods、Access‑Control‑Allow‑Headers、Access‑Control‑Allow‑Credentials などのヘッダを返し、
クライアントは fetch()、axios、SWR でリクエストを送るときに credentials: include を指定して認証情報を送信できます。
OPTIONS メソッドで送られるプリフライトリクエストは、実際のリクエストが許可されるかを確認するために必須です。
2026年現在、Cloudflare Workers、Vercel Edge、Hono cors middleware、fastify-cors、@supabase/cors 設定が主流となっています。

主な特徴・仕組み

  • Access‑Control‑Allow‑Origin で許可するオリジンを列挙
  • Access‑Control‑Allow‑Methods で許可する HTTP メソッドを指定
  • Access‑Control‑Allow‑Headers で許可するリクエストヘッダを列挙
  • Access‑Control‑Allow‑Credentials を true にすると Cookie や Authorization ヘッダを送信可
  • プリフライトリクエストは OPTIONS で送られ、サーバは Access‑Control‑Max‑Age でキャッシュ期間を設定
  • Fetch API では mode: cors がデフォルト、credentials: include で認証情報を送信
  • axios では withCredentials: true、SWR では fetcher に credentials: include を渡す
  • Edge ランタイム(Cloudflare Workers, Vercel Edge)では addEventListener('fetch', ...) 内で Response にヘッダを付与
  • Hono では app.use('*', cors()) で簡易設定、fastify-cors では fastify.register(require('fastify-cors'), { ... })
  • @supabase/cors は Supabase プロジェクト設定で cors オプションを指定

スペック/製品比較表

フレームワークミドルウェアデフォルト CORSプリフライト対応Credentials
Expresscors()なしありあり
Fastifyfastify-corsなしありあり
Honocors()ありありあり
Cloudflare Workersなしありありあり
Vercel Edgeなしありありあり

具体例・対応製品

自作PCで CORS を扱う際に選ぶハードウェア例。

  • GPU: RTX 5090 (24GB GDDR7, 5.7GHz)
  • CPU: Ryzen 9 9950X3D (8MB L3, 5.0GHz)
  • CPU: Core Ultra 9 285K (3.5GHz, 16MB L3)
  • メモリ: DDR5-6000 (32GB)
  • ストレージ: PCIe 5.0 x16 NVMe SSD (2TB)
  • 電源: 650W PSU
  • ネットワーク: 2.5Gbps LAN
  • ファン: 120mm 風量 1200CFM
  • モニタ: 27" 4K 144Hz
  • ケース: 600mm ATX
  • OS: Ubuntu 24.04 LTS

これらのスペックは 2025年に登場した次世代ハードウェアで、CORS を利用した API サーバを構築する際に最適です。

自作PCでの選び方・注意点

  • サーバソフトは 2026年に更新されるフレームワークを選択
  • CORS 設定はプロダクション環境で必ず有効化
  • Access‑Control‑Allow‑Credentials を true にする場合はオリジンを限定
  • プリフライトリクエストはキャッシュ期間を長めに設定し、帯域を節約
  • Edge ランタイムを利用する場合は addEventListener('fetch', ...) 内でヘッダを付与
  • Hono で cors() を使用する際は origin オプションで許可リストを設定
  • fastify-cors では methods、allowedHeaders を明示的に列挙
  • @supabase/cors は Supabase Dashboard で cors 設定を行い、API キーを安全に管理
  • ネットワークカードは 2.5Gbps 以上を推奨、遅延を抑える
  • 省電力モードをオフにして、API サーバの応答時間を安定化

関連用語との違い

  • Same‑Origin Policy: ブラウザが自動で適用する制限で、CORS はその例外を許可する仕組み
  • CSP(Content Security Policy): スクリプトやリソースのロード元を制御、CORS はリクエストヘッダで許可を与える
  • CSRF(Cross‑Site Request Forgery): 認証情報を悪用した攻撃、CORS は credentials を制御して対策
  • OIDC(OpenID Connect): 認証プロトコル、CORS は認証情報の送信許可を設定
  • JWT(JSON Web Token): トークンベース認証、CORS はトークンを含むヘッダを許可

よくある質問

Q1: プリフライトリクエストは必須ですか?
A1: メソッドが GET/HEAD 以外、またはカスタムヘッダを送る場合は必須です。

Q2: Access‑Control‑Allow‑Credentials を true にすると安全性が落ちますか?
A2: オリジンを限定すれば安全。無制限に許可すると Cookie が漏れる恐れがあります。

Q3: Edge ランタイムで CORS を設定する際の注意点は?
A3: Response オブジェクトにヘッダを追加し、event.respondWith で返す必要があります。

まとめ

CORS は Web アプリケーションが安全に別オリジンへアクセスするための不可欠な仕組みです。
2026年に主流となった Cloudflare Workers、Vercel Edge、Hono cors middleware、fastify-cors、@supabase/cors 設定を活用し、
自作PCで構築する API サーバに適切に導入すれば、認証情報の送信やプリフライト処理をスムーズに行えます。
RTX 5090、Ryzen 9 9950X3D、Core Ultra 9 285K、DDR5-6000、PCIe 5.0 x16 など最新ハードウェアを組み合わせることで、
高性能かつ安全な開発環境を実現できます。

この記事について
カテゴリーセキュリティ
難易度中級
作成日2026/4/20