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 le HTTP ou HTTPS mais je ne peux pas le forcer à utiliser https:
.
J'utilise la propriété window.location.protocol pour définir quel que soit le site, https:
puis actualiser la page pour, espérons-le, recharger une nouvelle URL https chargée dans le navigateur.
if (window.location.protocol != "https:") {
window.location.protocol = "https:";
window.location.reload();
}
javascript
https
window.location
Utilisateur enregistré
la source
la source
Réponses:
Essaye ça
location.href = blah
ajoute cette redirection à l'historique du navigateur. Si l'utilisateur clique sur le bouton de retour, il sera redirigé vers la même page. Il est préférable de l'utiliserlocation.replace
car il n'ajoute pas cette redirection à l'historique du navigateur.la source
window
et nondocument
?!==
-elle être ?location.replace(url)
serait bien mieux quelocation.href = url
dans ce cas. Vous ne voulez pas de cette redirection dans l'historique du navigateur ou que l'utilisateur clique sur le bouton de retour juste pour être redirigé à nouveau.La définition de location.protocol permet d'accéder à une nouvelle URL . Pas besoin d'analyser / découper quoi que ce soit.
Firefox 49 a un bug où ça
https
marche maishttps:
pas. Dit être corrigé dans Firefox 54 .la source
if window.location.href.match('http:') window.location.href = window.location.href.replace('http', 'https')
fonctionne sur les derniers FF et Chrome.location.protocol = "https";
semble bien fonctionner dans firefox 28location.replace
plutôt.Ce n'est pas une bonne idée car vous redirigez simplement l' utilisateur vers https temporairement et le navigateur n'enregistre pas cette redirection.
Vous décrivez la tâche pour le serveur web (apache, nginx etc.) http 301, http 302
la source
Que dis-tu de ça?
Idéalement, vous le feriez du côté serveur, cependant.
la source
la source
Ce n'est pas un moyen Javascript pour répondre à cela, mais si vous utilisez CloudFlare, vous pouvez écrire des règles de page qui redirigent l'utilisateur beaucoup plus rapidement vers HTTPS et c'est gratuit. Ressemble à ceci dans les règles de page de CloudFlare:
la source
Tu peux faire:
la source
Manière fonctionnelle
la source
Vous devriez vérifier ceci: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests
Ajouter cette méta tag à votre index.html à l' intérieur de la tête
J'espère que cela a aidé.
la source
J'aime les réponses à cette question. Mais pour être créatif, je voudrais partager une autre façon:
la source
Le code ci-dessous suppose que la variable "str" contient votre chaîne http: // ..... Il vérifie si c'est https et si true ne fait rien. Cependant, s'il s'agit de http, il remplace http par https.
la source
la source
Salut j'ai utilisé cette solution fonctionne parfaitement. Pas besoin de vérifier, utilisez simplement https.
la source
Je viens de faire tester toutes les variantes de script par Pui Cdm , y compris les réponses ci-dessus et bien d'autres en utilisant php, htaccess, la configuration du serveur et Javascript, les résultats sont que le script
fourni par vivek-srivastava fonctionne mieux et vous pouvez ajouter une sécurité supplémentaire dans le script java.
la source