開発者はCORSを理解していない(2019年)
多くの開発者がCORS(Cross-Origin Resource Sharing)の仕組みを正しく理解しておらず、セキュリティ上の誤解やデバッグの難しさに直面している。CORSはサーバー側で設定するものであり、ブラウザが異なるオリジン間のリクエストを制限するための仕組みであるが、多くの開発者がこれを誤って解釈している。
背景メモ
• CORS(Cross-Origin Resource Sharing)は、ブラウザが異なるオリジン(ドメイン・ポート・プロトコルの組み合わせ)からのリクエストを制御するセキュリティ機構。サーバー側がHTTPヘッダー(Access-Control-Allow-Originなど)を返すことで「このオリジンからのアクセスは許可する」と明示する仕組み。
• 多くの開発者が「CORSがエラーを出す=CORSを直さなければ」と誤解し、フロントエンド側(fetchのmode設定など)で無理に回避しようとするが、根本的にCORSは**ブラウザによる enforcement**であり、サーバーが適切なヘッダーを返すことでしか解決しない。
• 「CORSエラーが出る→APIサーバーの設定を確認せずにフロントエンドでなんとかしようとする」という誤解が蔓延している現場を皮肉った記事。タイトルの「Developers don't understand CORS」は、この誤解をタイムリーに指摘して話題になった。
• 読み手が知っておくとよい前提:CORSはあくまでブラウザの制約であり、curlやPostmanでは再現しない。また、プリフライトリクエスト(OPTIONSメソッド)の仕組みや、認証情報(cookie)を含むリクエストでの制約(Access-Control-Allow-Credentialsなど)も絡むため、実務でハマりやすいテーマ。