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();
}
Essaye ça
if (location.protocol != 'https:')
{
location.href = 'https:' + window.location.href.substring(window.location.protocol.length);
}
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 bug où https
fonctionne mais https:
pas. Dit d'être corrigé dans Firefox 54 .
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
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.
if (location.protocol == 'http:')
location.href = location.href.replace(/^http:/, 'https:')
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:
Tu peux faire:
<script type="text/javascript">
if (window.location.protocol != "https:") {
window.location.protocol = "https";
}
</script>
Manière fonctionnelle
window.location.protocol === 'http:' && (location.href = location.href.replace(/^http:/, 'https:'));