Mixed Content
HTTPSページからHTTPリソースを読み込もうとした際のエラー
概要
Mixed Content(混在コンテンツ)エラーは、HTTPSで配信されるページがHTTP(非暗号化)のリソース(画像、スクリプト、スタイルシート等)を読み込もうとした場合に発生します。
エラーメッセージ
Mixed Content: The page at 'https://example.com/' was loaded over HTTPS,
but requested an insecure resource 'http://example.com/image.jpg'.
This request has been blocked; the content must be served over HTTPS.
または
混在コンテンツ: 'https://example.com/' のページが HTTPS で読み込まれましたが、
安全でないリソース 'http://example.com/image.jpg' をリクエストしました。
このリクエストはブロックされました。
原因
- ハードコードされたHTTP URL: コード内にhttp://が残っている
- 外部リソース: HTTPのみ対応のCDNや外部サービス
- データベース内のURL: CMSに保存された古いURL
- 相対プロトコル未使用: プロトコルを明示的に指定
Mixed Contentの種類
Passive/Display Mixed Content(表示型)
- 画像 (<img>)
- 動画 (<video>)
- 音声 (<audio>)
警告は出るが、多くのブラウザでは読み込まれる
Active Mixed Content(アクティブ型)
- JavaScript (<script>)
- CSS (<link rel="stylesheet">)
- iframe (<iframe>)
- XMLHttpRequest / Fetch
- WebSocket
セキュリティリスクが高いため、ブロックされる
解決策
1. 相対プロトコルまたはHTTPSを使用
| |
2. Content-Security-Policy で自動アップグレード
| |
| |
| |
3. データベース内URLの一括置換
| |
4. JavaScript での検出と修正
| |
5. 開発時のMixed Content確認
| |
| |
6. CSPレポートで監視
| |
| |
ブラウザでの確認方法
Chrome DevTools:
1. F12 で開発者ツールを開く
2. Console タブで警告/エラーを確認
3. Network タブで "mixed-content" をフィルタ
4. Security タブで詳細を確認
Browser の他のエラー
この記事は役に立ちましたか?