Tous les guides de déploiement Déploiement

Comment corriger les avertissements de contenu mixte

Le contenu mixte se produit quand une page HTTPS charge des sous-ressources (images, scripts, feuilles de style, polices) via du HTTP non chiffré. Les navigateurs bloquent ou avertissent de cela car une ressource non sécurisée sur une page sécurisée compromet la sécurité de toute la page.

Deux types de contenu mixte

TypeExemplesComportement du navigateur
Actif (dangereux)Scripts, iframes, XHR, CSSBloqué par tous les navigateurs
Passif (affichage)Images, audio, vidéoAffiché avec avertissement / cadenas dégradé

Le contenu mixte actif peut modifier la page (un attaquant man-in-the-middle pourrait injecter du JavaScript malveillant), donc les navigateurs le bloquent complètement. Le contenu mixte passif est moins dangereux mais dégrade quand même l’indicateur de sécurité.

Comment trouver le contenu mixte

DevTools du navigateur

  1. Ouvrez votre site dans Chrome/Firefox
  2. Ouvrez DevTools (F12) → onglet Console
  3. Cherchez des erreurs comme :
    Mixed Content: The page at 'https://example.com' was loaded over HTTPS,
    but requested an insecure resource 'http://example.com/image.jpg'.

Scan en ligne de commande

curl -s https://yourdomain.com | grep -oP 'http://[^"'"'"'> ]+' | sort -u

Causes courantes et corrections

URLs http:// codées en dur dans le HTML

<!-- Problème -->
<img src="http://example.com/logo.png">

<!-- Correction : utiliser le protocole relatif ou HTTPS -->
<img src="https://example.com/logo.png">
<img src="//example.com/logo.png">
<img src="/logo.png">

Bonne pratique : utilisez des chemins relatifs (/images/logo.png) autant que possible.

Ressources tierces encore en HTTP

<!-- Problème -->
<script src="http://cdn.example.com/library.js"></script>

<!-- Correction -->
<script src="https://cdn.example.com/library.js"></script>

Si le tiers ne prend pas en charge HTTPS, trouvez un fournisseur alternatif ou hébergez la ressource vous-même.

Contenu de base de données avec URLs codées en dur

WordPress et d’autres CMS stockent des URLs absolues dans la base de données. Après la migration vers HTTPS :

-- WordPress : mettre à jour les URLs dans les articles
UPDATE wp_posts SET post_content = REPLACE(post_content, 'http://example.com', 'https://example.com');
UPDATE wp_options SET option_value = REPLACE(option_value, 'http://example.com', 'https://example.com');

Ou utilisez un plugin comme Better Search Replace.

CSS avec des références HTTP

/* Problème */
background-image: url('http://example.com/bg.jpg');

/* Correction */
background-image: url('https://example.com/bg.jpg');
background-image: url('/images/bg.jpg');

Content Security Policy (CSP) — prévenir le contenu mixte futur

Ajoutez un en-tête CSP qui bloque les ressources HTTP :

Nginx :

add_header Content-Security-Policy "upgrade-insecure-requests" always;

Apache :

Header always set Content-Security-Policy "upgrade-insecure-requests"

upgrade-insecure-requests indique aux navigateurs de mettre à niveau automatiquement les requêtes http:// en https:// — un filet de sécurité pendant que vous corrigez les URLs sources.

Correction systématique : audit complet du site

Pour un nettoyage approfondi, auditez l’ensemble de votre site :

1. Crawler pour les références HTTP

# Scanner tous les fichiers HTML pour les URLs http://
find /var/www/html -name '*.html' -o -name '*.php' | xargs grep -l 'http://' 2>/dev/null

# Scanner les fichiers CSS
find /var/www/html -name '*.css' | xargs grep -l 'http://' 2>/dev/null

# Scanner les fichiers JavaScript
find /var/www/html -name '*.js' | xargs grep -l 'http://' 2>/dev/null

2. Corriger les URLs par catégorie

SourceMéthode de correction
Vos propres ressourcesChanger en chemins relatifs (/images/logo.png)
Ressources CDNMettre à jour vers https://cdn.example.com/...
Scripts tiersMettre à jour l’URL ou trouver une alternative HTTPS
CSS en ligneRechercher-remplacer http://https://
Contenu base de données (WordPress)wp search-replace 'http://yourdomain.com' 'https://yourdomain.com'
Fichiers de template/thèmeModifier directement les fichiers sources

3. Vérifier avec les DevTools du navigateur

Après les corrections, ouvrez chaque page → DevTools (F12) → onglet Console. Une page propre n’affiche aucun avertissement de contenu mixte. L’icône du cadenas doit être pleine (ni cassée ni avec un triangle d’avertissement).

4. Prévenir le contenu mixte futur

Ajoutez cette balise meta dans le <head> de votre HTML comme filet de sécurité permanent :

<meta http-equiv="Content-Security-Policy" content="upgrade-insecure-requests">

Ou définissez-le à l’échelle du serveur via la configuration Nginx/Apache (montrée ci-dessus).

Types de contenu qui causent couramment du contenu mixte

Type de contenuOù vérifierExemple
Images<img src="http://...">Images uploadées, avatars, logos
Scripts<script src="http://...">Analytics, widgets de chat, scripts publicitaires
Feuilles de style<link href="http://...">Polices externes, frameworks CSS
Polices@font-face { src: url("http://...") }Google Fonts (généralement pas de problème), polices personnalisées
iframes<iframe src="http://...">Vidéos intégrées, cartes, widgets
XHR/Fetchfetch("http://...")Appels API en JavaScript
Images de fondbackground-image: url("http://...")Arrière-plans CSS

Questions fréquentes

Le contenu mixte affecte-t-il mon SEO ?

Pas directement. Google crawle en se basant sur le protocole d’URL de la page, pas sur les sous-ressources. Cependant, si le contenu mixte déclenche des avertissements du navigateur ou bloque du contenu visible, l’expérience utilisateur se dégrade — ce qui peut indirectement nuire aux classements via un taux de rebond plus élevé.

Puis-je simplement utiliser upgrade-insecure-requests sans corriger les URLs ?

Cela fonctionne comme solution temporaire, mais corriger les URLs sources est préférable. L’en-tête CSP dépend de la prise en charge du navigateur (tous les navigateurs modernes le supportent, mais certains anciens clients non) et ajoute un en-tête supplémentaire à chaque réponse.

Mon site a des centaines d’URLs HTTP codées en dur. Quelle est la correction la plus rapide ?

Ajoutez l’en-tête CSP upgrade-insecure-requests immédiatement (une ligne de configuration serveur). Ensuite, faites un rechercher-remplacer global dans votre codebase et votre base de données. Utilisez grep -r 'http://' src/ pour trouver les URLs codées en dur dans le code.

Articles connexes

Déploiement 2026-05-07
Comment rediriger HTTP vers HTTPS
Forcer tout le trafic vers HTTPS avec des redirections côté serveur. Exemples de configuration pour Nginx, Apache et .htaccess avec des redirections permanentes 301.
Déploiement 2026-05-08
Comment installer un certificat SSL sur Nginx
Guide étape par étape pour installer un certificat SSL sur Nginx. Couvre l'upload des fichiers, la configuration complète du bloc serveur, les bonnes pratiques TLS, HTTP/2, HSTS, la configuration des redirections, les tests et le dépannage de 6 erreurs courantes.
SSL et certificats 2026-05-08
Qu'est-ce que le HTTPS ? Guide complet
HTTPS chiffre la connexion entre votre navigateur et un site web. Decouvrez comment HTTPS fonctionne, le handshake TLS, les differences entre HTTP et HTTPS, l'impact sur les performances et comment l'activer gratuitement.
Obtenez un certificat SSL gratuit dans votre navigateur
Aucune installation, aucun compte. Votre clé privée ne quitte jamais votre appareil.
Obtenir un certificat