web-dev-qa-db-fra.com

Détecter HTTP ou HTTPS puis forcer HTTPS en JavaScript

Existe-t-il un moyen de détecter HTTP ou HTTPS, puis de forcer l'utilisation de HTTPS avec JavaScript?

J'ai quelques codes pour détecter HTTP ou HTTPS mais je ne peux pas le forcer à utiliser https:.

J'utilise la propriété window.location.protocol pour définir le site, quel que soit le site, sur https:, puis actualisez la page pour recharger, si tout va bien, une nouvelle URL https chargée dans le navigateur.

if (window.location.protocol != "https:") {
   window.location.protocol = "https:";
   window.location.reload();
}
265
Registered User

Essaye ça

if (location.protocol != 'https:')
{
 location.href = 'https:' + window.location.href.substring(window.location.protocol.length);
}
436
Soumya

Le paramètre location.protocol permet d'accéder à une nouvelle URL . Pas besoin d'analyser/couper n'importe quoi.

if (location.protocol !== "https:") {
  location.protocol = "https:";
}

Firefox 49 a un bughttps fonctionne mais https: pas. Dit d'être corrigé dans Firefox 54 .

47
sam

Ce n'est pas une bonne idée parce que vous venez de rediriger temporairement l'utilisateur vers https et que le navigateur n'enregistre pas cette redirection.

Vous décrivez la tâche du serveur Web (Apache, nginx, etc.) http 301, http 302

19
b1_

Que dis-tu de ça?

if (window.location.protocol !== 'https:') {
    window.location = 'https://' + window.location.hostname + window.location.pathname + window.location.hash;
}

Idéalement, vous le feriez du côté serveur, cependant.

13
keirog
if (location.protocol == 'http:')
  location.href = location.href.replace(/^http:/, 'https:')
12
Steven Penny

Ce n'est pas un moyen Javascript de répondre à cela, mais si vous utilisez CloudFlare, vous pouvez écrire règles de page qui redirige l'utilisateur beaucoup plus rapidement vers HTTPS et c'est gratuit. Cela ressemble à ceci dans les règles de page de CloudFlare:

enter image description here

4
Mikeumus

Tu peux faire:

  <script type="text/javascript">        
        if (window.location.protocol != "https:") {
           window.location.protocol = "https";
        }
    </script>
0
M.BRAHAM

Manière fonctionnelle

window.location.protocol === 'http:' && (location.href = location.href.replace(/^http:/, 'https:'));