web-dev-qa-db-fra.com

Remplacez http par https dans le code source lors de l'utilisation de SSL

J'ai récemment activé Force_SSL sur l'un de mes sites Joomla (en activant l'option "Forcer SSL" dans la configuration globale), mais j'ai rencontré des problèmes avec le contenu bloqué (contenu non SSL) des polices Google et plusieurs scripts externes de JotForm .com (chargé via "http: //" dans le modèle et le contenu).

Pour ce site particulier, j'ai résolu le problème en parcourant le code et en modifiant chaque référence externe http://... En https://... Ou simplement //..., Mais ma question est la suivante:

Cela pourrait-il être résolu plus facilement ou plus efficacement en remplaçant automatiquement http://... Par https://... Dans le code source (avec un plugin) ou en utilisant le fichier .htaccess?

5
johanpw

Vous voulez vraiment mettre en place un plugin pour cela. En gros, l’objectif serait de réécrire toute http:// ou https:// pour juste //. En prime, nous ne pouvons effectuer cette vérification qu'à l'intérieur des balises (afin que les URL ne soient pas affectées uniquement sur la page.

Un plugin système avec cette méthode devrait faire l'affaire:

public function onAfterRender() {
    $buffer = JResponse::getBody();
    $pattern = '~(<[^>]{0,}["\'])(https?://)~iU';
    $replacement = '$1//';
    $buffer = preg_replace($pattern, $replacement, $buffer);
    JResponse::setBody($buffer);
}

Cela va probablement attraper quelque chose que vous ne voulez pas remplacer par juste //, mais c'est un début!

2
David Fritsch

Il y a un excellent plugin pour ce produit par Yireo https://www.yireo.com/software/joomla-extensions/ssl-redirect

Joomla! peut être configuré pour utiliser SSL. Mais cela ne signifie pas que toutes vos pages sécurisées sont réellement sécurisées. Ce plugin force ce qui est réellement requis: HTTPS ou HTTP.

Mieux encore, les développeurs sont très réactifs ... ce qui fait toute la différence pour moi.

1
Joseph

Vous n'avez pas besoin d'utiliser le protocole dans un lien js. Vous pouvez utiliser // et le protocole correct sera sélectionné pour vous.

Par exemple.

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

Je viens de faire une recherche globale/remplacer dans mon code et le laisser comme ça, et utiliser //src.js aller de l'avant.

1
user101289