Webアプリケーション開発中に、Edgeで画面が表示されない、または機能が動作しないといった問題に直面することがあります。
その原因として、ブラウザのセキュリティ機能であるCORS(Cross-Origin Resource Sharing)ポリシーによる制限が考えられます。
この記事では、Edgeの開発者ツールを使ったCORSエラーの確認方法と、その具体的な対処法を解説します。
【要点】EdgeでCORSエラーが発生した場合の確認と対処
- 開発者ツールのコンソール確認: CORSエラーが発生しているか、エラーメッセージの内容を確認する。
- サーバー側のCORS設定確認: APIサーバーが適切なCORSヘッダー(Access-Control-Allow-Originなど)を返しているか確認する。
- プロキシやリバースプロキシの設定見直し: これらの設定がCORSヘッダーを阻害していないか確認する。
ADVERTISEMENT
目次
CORSエラーが発生する仕組み
CORSとは、ブラウザがセキュリティのために、あるオリジン(ドメイン、プロトコル、ポート番号の組み合わせ)から読み込まれたリソースが、異なるオリジンにあるリソースにアクセスする際の制限を設ける仕組みです。
Webアプリケーションは、JavaScriptなどを使って他のドメインにあるAPIサーバーからデータを取得することがよくあります。このとき、ブラウザは同一オリジンポリシーに基づいて、異なるオリジンへのリクエストをデフォルトでブロックします。
APIサーバー側が、特定のオリジンからのリクエストを許可する旨のヘッダー(Access-Control-Allow-Originなど)をレスポンスに含めることで、この制限を回避できます。この設定がされていない場合に、ブラウザでCORSエラーが発生します。
Edge開発者ツールでのCORSエラー確認方法
- 開発者ツールを開く
Edgeで問題が発生しているWebページを開き、キーボードでF12キーを押すか、ページ上で右クリックして「検証」を選択します。 - 「Console」タブを選択する
開かれた開発者ツールウィンドウの上部にあるタブから「Console」を選択します。 - エラーメッセージを確認する
コンソールに、赤色で表示されるエラーメッセージがないか確認します。CORSエラーの場合、「Access to fetch at ‘…’ from origin ‘…’ has been blocked by CORS policy: No ‘Access-Control-Allow-Origin’ header is present on the requested resource.」といった内容が表示されます。 - 「Network」タブで詳細を確認する
さらに詳しい情報を確認したい場合は、「Network」タブを選択します。 - リクエストとレスポンスを確認する
ページを再読み込みすると、発生したHTTPリクエストの一覧が表示されます。問題のあるリクエスト(通常は赤色で表示される)を選択し、右側のペインで「Headers」タブを開きます。 - レスポンスヘッダーを確認する
レスポンスヘッダーのセクションで、Access-Control-Allow-Origin、Access-Control-Allow-Methods、Access-Control-Allow-HeadersといったCORS関連のヘッダーが正しく設定されているかを確認します。
CORSエラーの主な原因と対処法
1. サーバー側でCORS設定がされていない
最も一般的な原因は、APIサーバーがクライアントからのCORSリクエストを許可する設定を行っていないことです。
対処法:
- サーバーサイドコードの修正
使用しているWebフレームワークや言語(Node.js, Python/Flask, Ruby/Rails, Java/Springなど)に応じて、CORSミドルウェアや設定を追加・修正します。例えば、Node.jsのExpressフレームワークでは、corsパッケージを導入して以下のように設定します。const express = require('express'); const cors = require('cors'); const app = express(); app.use(cors({ origin: 'http://localhost:3000' // フロントエンドのオリジンを指定 })); // ... その他のAPI設定特定のオリジンではなく、すべてのオリジンからのアクセスを許可する場合は、`origin: ‘*’`と設定しますが、セキュリティリスクが高まるため、開発環境以外での使用は推奨されません。
- APIゲートウェイやリバースプロキシの設定
NginxやApache、AWS API GatewayなどのリバースプロキシやAPIゲートウェイを使用している場合、そこでCORSヘッダーを追加する設定を行います。
2. プロキシサーバーによるCORSヘッダーの削除・改変
開発環境などで、ローカルのプロキシサーバー(Webpack Dev Serverなど)を経由してAPIにアクセスしている場合、プロキシの設定がCORSヘッダーを削除したり、改変したりすることがあります。
対処法:
- プロキシ設定の確認
Webpack Dev Serverなどを使用している場合、`webpack.config.js`などの設定ファイルで、`proxy`オプションが正しく設定されているか確認します。必要に応じて、ターゲットURLの指定や、レスポンスヘッダーの追加設定を行います。 - 開発者ツールでのヘッダー確認
「Network」タブで、プロキシを経由した後の最終的なレスポンスヘッダーを確認し、CORS関連ヘッダーが期待通りに含まれているかチェックします。
3. ブラウザのキャッシュや拡張機能の影響
まれに、ブラウザのキャッシュが古い情報を保持していたり、インストールされている拡張機能がCORSポリシーに干渉したりすることがあります。
対処法:
- ブラウザキャッシュのクリア
Edgeの設定から、閲覧履歴、Cookie、キャッシュされた画像とファイルなどを削除します。 - 拡張機能の無効化
Edgeのアドレスバーに`edge://extensions/`と入力して拡張機能管理画面を開き、一時的にすべての拡張機能を無効にして問題が解消するか確認します。特定拡張機能が原因の場合は、その拡張機能の設定を見直すか、無効化します。 - シークレットウィンドウでの確認
Edgeの新しいウィンドウ(Ctrl+Shift+N)を開き、そこでWebアプリケーションを試します。シークレットウィンドウは通常、キャッシュや拡張機能の影響を受けません。
4. HTTPSとHTTPの混在
HTTPSで提供されているWebページから、HTTPで提供されているAPIエンドポイントにアクセスしようとすると、ブラウザのセキュリティポリシーによりブロックされることがあります。
対処法:
- 両方をHTTPS化する
可能であれば、APIサーバーもHTTPSで提供するように設定します。 - サーバー側で混合コンテンツへの対応を検討する
サーバー側で、HTTPリクエストに対しても適切なCORSヘッダーを返すように設定を調整します。ただし、セキュリティ上の観点から推奨される方法ではありません。
ADVERTISEMENT
EdgeとChromeでのCORSエラー確認方法の比較
| 項目 | Edge | Chrome |
|---|---|---|
| 開発者ツール起動 | F12キーまたは右クリック→「検証」 | F12キーまたは右クリック→「検証」 |
| コンソール確認 | 「Console」タブ | 「Console」タブ |
| ネットワークリクエスト確認 | 「Network」タブ | 「Network」タブ |
| レスポンスヘッダー確認 | 「Network」タブ → リクエスト選択 → 「Headers」タブ | 「Network」タブ → リクエスト選択 → 「Headers」タブ |
| 基本的な操作性 | ほぼ同一 | ほぼ同一 |
EdgeとChromeはどちらもChromiumベースであるため、開発者ツールのUIや操作性は非常に似ています。CORSエラーの確認手順もほとんど変わりません。
どちらのブラウザでも、コンソールでエラーメッセージを確認し、ネットワークタブでリクエストとレスポンスヘッダーを調べることで、CORS問題の原因特定が可能です。
開発者は、どちらのブラウザで問題が発生しても、同様の手順でデバッグを進めることができます。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Windows・PCの人気記事ランキング
- 【Edge】起動時や新しいタブを「Google」にする設定!ニュースを消してシンプルにする方法
- 【直し方】F7でカタカナにならない!ファンクションキーが効かず音量などが変わる時のFnロック解除法
- 【Windows】デスクトップのアイコンが「白い紙」になった!アイコンキャッシュを削除して元に戻すコマンド
- 【Windows】サブモニターが映らない!HDMIを挿しても「信号なし」になる時の認識・設定手順
- 【Windows】画面がチカチカ・点滅する!グラフィックドライバの更新と設定の見直し
- 【PC周辺】2台のモニターで壁紙を「別々」にする方法!Windows11での配置と調整
- 【Windows】パスワードなしで起動!PIN入力を省略して自動ログイン(サインイン)させる設定手順
- 【Windows】デスクトップアイコンの「緑のチェック」は何?OneDriveの同期マークを非表示にする方法
- Windows 11を極限まで軽量化する「不要な標準サービス」停止リスト|PCの動作を爆速化する設定手順とリスク管理の全貌
- 【Windows】ロック画面のタイムアウト時間を変更してすぐに画面が消えないようにする手順
