MeWrite Docs

Failed to fetch - Mixed Content

Mixed Content(HTTPS→HTTP)によるFailed to fetchエラーの原因と解決策

概要

HTTPSページからHTTPリソースへのリクエストがブロックされている場合に発生します。ブラウザのセキュリティ機能により、セキュアなページから非セキュアなリソースへのアクセスが制限されます。

この原因かどうかの確認方法

Consoleに以下のようなメッセージが出る場合、Mixed Contentが原因です:

Mixed Content: The page at 'https://...' was loaded over HTTPS,
but requested an insecure resource 'http://...'

解決策

1. HTTPSに変更する(推奨)

1
2
3
4
5
// NG
fetch('http://api.example.com/data');

// OK
fetch('https://api.example.com/data');

2. プロトコル相対URLを使用

1
2
// 現在のページのプロトコルに合わせる
fetch('//api.example.com/data');

3. 環境変数でAPIのURLを管理

1
2
3
4
5
// .env
// VITE_API_URL=https://api.example.com

// コード内
fetch(`${import.meta.env.VITE_API_URL}/data`);

4. APIサーバーをHTTPS化

Let’s Encryptなどを使用して、APIサーバーにSSL証明書を設定してください。

1
2
# Let's Encrypt + Certbot
sudo certbot --nginx -d api.example.com

よくある間違い

  • 開発環境でHTTPを使い、本番環境でHTTPSに変更し忘れる
  • 設定ファイルにハードコードされたHTTP URLが残っている
  • サードパーティAPIがHTTPSに対応していないのにHTTPSページから呼び出す

まだ解決しない場合

診断ハブに戻る

関連エラー

関連エラー

JavaScript の他のエラー

最終更新: 2026-02-04