web-dev-qa-db-fra.com

Pourquoi est-ce que je reçois soudainement un problème de "blocage du chargement de contenu actif mixte" dans Firefox?

Ce matin, après la mise à niveau de mon navigateur Firefox vers la dernière version (du 22 au 23), certains des aspects clés de mon back-office (site Web) ont cessé de fonctionner.

En examinant le journal Firebug, les erreurs suivantes ont été signalées:

Blocked loading mixed active content "http://code.jquery.com/ui/1.8.10/themes/smoothness/jquery-ui.css"
Blocked loading mixed active content "http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.min.js"`

parmi d'autres erreurs causées par le dernier des deux précédents non chargé.

Que signifie ce qui précède et comment puis-je le résoudre?

333
Appulus

J'ai trouvé cet article de blog qui a éclairci quelques petites choses. Pour citer le bit le plus pertinent:

Le contenu actif mixte est maintenant bloqué par défaut dans Firefox 23!

Qu'est-ce qu'un contenu mixte?
Lorsqu'un utilisateur visite une page servie via HTTP, sa connexion est ouverte pour les attaques d'espionnage et les attaques de type homme au milieu (MITM). Lorsqu'un utilisateur visite une page servie via HTTPS, sa connexion avec le serveur Web est authentifiée et cryptée avec SSL, ce qui la protège des attaques des oreilles indiscrètes et des attaques MITM.

Toutefois, si une page HTTPS comprend du contenu HTTP, la partie HTTP peut être lue ou modifiée par des attaquants, même si la page principale est affichée sur HTTPS. Lorsqu'une page HTTPS a un contenu HTTP, nous appelons ce contenu "mixte". La page Web visitée par l'utilisateur n'est que partiellement cryptée, car une partie du contenu est extraite non cryptée via HTTP. Mixed Content Blocker bloque certaines requêtes HTTP sur les pages HTTPS.

La solution, dans mon cas, consistait simplement à vérifier que la jquery inclut les éléments suivants (notez la suppression du protocole):

<link rel="stylesheet" href="//code.jquery.com/ui/1.8.10/themes/smoothness/jquery-ui.css" type="text/css">
<script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.min.js"></script>

Notez que le correctif temporaire consiste à cliquer sur l'icône "bouclier" dans le coin supérieur gauche de la barre d'adresse et à sélectionner "Désactiver la protection sur cette page", bien que ceci soit pas recommandé pour des raisons évidentes.

UPDATE: Ce lien à partir des pages de support de Firefox (Mozilla) est également utile pour expliquer ce qui constitue un contenu mixte. En outre, comme indiqué dans le paragraphe ci-dessus, explique en détail comment afficher la page indépendamment:

La plupart des sites Web continueront à fonctionner normalement sans aucune action de votre part.

Si vous devez autoriser l'affichage du contenu mélangé, vous pouvez le faire facilement:

Cliquez sur l'icône du bouclier Bouclier de contenu mixte dans la barre d'adresse et choisissez Désactiver la protection sur cette page dans le menu déroulant.

L’icône dans la barre d’adresse deviendra un triangle d’avertissement orange Icône d’identité d’avertissement pour vous rappeler que du contenu non sécurisé est affiché.

Pour revenir à l'action précédente (bloquer à nouveau le contenu mélangé), il suffit de recharger la page.

401
Appulus

Cela signifie que vous appelez http à partir de https. Vous pouvez utiliser src="//url.to/script.js" dans votre balise de script et elle sera automatiquement détectée.

Vous pouvez également utiliser https dans votre src même si vous le publiez sur une page http. Cela évitera le problème potentiel mentionné dans les commentaires.

128
Alain Jacomet Forte

En l'absence d'une fonction de liste blanche, vous devez faire le choix "tout" ou "rien". Vous pouvez désactiver complètement le blocage de contenu mixte.


Le choix rien

Vous devrez désactiver de manière permanente le blocage de contenu mixte pour le profil actif actuel.

Dans la barre "Awesome", tapez "about: config". Si c'est votre première fois, vous obtiendrez le message "Cela pourrait annuler votre garantie!" message.

Oui tu vas faire attention. Oui tu promets!

Trouvez security.mixed_content.block_active_content . Définissez sa valeur sur false .


Tout le choix

La réponse de iDevelApp est géniale.

51
DRaehal

Si vous souhaitez autoriser la demande de contenu mixte, ajoutez la balise ci-dessous à la balise <head>.

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

Si vous souhaitez bloquer, ajoutez la balise ci-dessous à la balise <head>:

_<meta http-equiv="Content-Security-Policy" content="block-all-mixed-content">
_
21
tapas talukder

Si vous utilisez un service interne via AJAX, assurez-vous que l'URL pointe sur https, ce qui a effacé l'erreur pour moi.

_ AJAX _ initiale: " http://XXXXXX.com/Core.svc/ " + NomApi
Corrigé AJAX URL: " https://XXXXXX.com/Core.svc/ " + ApiName,

10
Bryan Cote-Chang

Son donné l'erreur en raison de la sécurité. pour cela, veuillez utiliser "https" et non "http" dans l'URL du site.

Par exemple :

   "https://code.jquery.com/ui/1.8.10/themes/smoothness/jquery-ui.css"
   "https://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.10/jquery-ui.min.js"
9
Amit Naraniwal

Dans la page appropriée qui effectue un appel de contenu mélangé https à http qui n'est pas accessible, vous pouvez ajouter l'entrée suivante dans l'élément pertinent et supprimer l'erreur de contenu mélangé.

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

J'ai eu le même problème parce que j'ai acheté un modèle CSS et qu'il a saisi un fichier javascript externe javascript via http://whatever.js.com/javascript.js. Je suis allé à cette page dans mon navigateur et l'ai ensuite changé en https://whatever... en utilisant SSL et cela a fonctionné. Par conséquent, dans ma balise HTML javascript, je viens de changer l'URL pour utiliser https au lieu de http et ça a marché.

5
Sarah

Pour forcer la redirection sur le protocole https, vous pouvez également ajouter cette directive dans .htaccess sur le dossier racine.

RewriteEngine on

RewriteCond %{REQUEST_SCHEME} =http

RewriteRule (.*) https://%{HTTP_Host}%{REQUEST_URI} [R=301,L]
4
Massimiliano

J'ai le même problème lorsque mon site passe de http à https. Nous avons ajouté une règle pour toutes les demandes de redirection http vers https.

Vous devez ajouter la règle de redirection pour la requête inter site, mais vous devez supprimer la règle de redirection pour les fichiers js/css externes.

2
tapas talukder

@ Blender Comment est la meilleure approche. Ne codez jamais le protocole en dur dans le code, car il sera difficile de le modifier si vous passez de http à https. Étant donné que vous devez modifier et mettre à jour manuellement tous les fichiers.

C'est toujours mieux car il détecte automatiquement le protocole.

src="//code.jquery.com
2
Krishnadas PC

J'ai constaté que si vous rencontriez des problèmes pour inclure ou mélanger votre page avec quelque chose comme http: //www.example.com, vous pouvez résoudre ce problème en mettant // www. .com à la place

1
irene salomo