Gibt es eine Möglichkeit, HTTP oder HTTPS zu erkennen und dann die Verwendung von HTTPS mit JavaScript zu erzwingen?
Ich habe einige Codes zum Erkennen von HTTP oder HTTPS, kann diese jedoch nicht erzwingen https:
.
Ich verwende die Eigenschaft window.location.protocol , um festzulegen , was auch immer die Site ist, und https:
dann die Seite zu aktualisieren, um hoffentlich eine neue https-URL neu zu laden, die in den Browser geladen wird.
if (window.location.protocol != "https:") {
window.location.protocol = "https:";
window.location.reload();
}
javascript
https
window.location
registrierter Nutzer
quelle
quelle
Antworten:
Versuche dies
location.href = blah
Fügt diese Weiterleitung zum Browserverlauf hinzu. Wenn der Benutzer auf die Schaltfläche "Zurück" klickt, wird er auf dieselbe Seite zurückgeleitet. Es ist besser zu verwenden,location.replace
da diese Umleitung nicht zum Browserverlauf hinzugefügt wird.quelle
window
und nichtdocument
?!==
?location.replace(url)
wäre viel besser alslocation.href = url
für diesen Fall. Sie möchten nicht, dass diese Umleitung im Browserverlauf angezeigt wird oder dass der Benutzer die Zurück-Schaltfläche drückt, um erneut umgeleitet zu werden.Durch Festlegen von location.protocol wird zu einer neuen URL navigiert . Sie müssen nichts analysieren / in Scheiben schneiden.
49 Firefox hat einen Bug , wo
https
funktioniert aberhttps:
nicht. Angeblich in Firefox 54 behoben .quelle
if window.location.href.match('http:') window.location.href = window.location.href.replace('http', 'https')
funktioniert mit den neuesten FF und Chrome.location.protocol = "https";
scheint jedoch in Firefox 28 zu funktionierenlocation.replace
stattdessen.Dies ist keine gute Idee, da Sie den Benutzer nur vorübergehend zu https umleiten und der Browser diese Umleitung nicht speichert.
Sie beschreiben die Aufgabe für den Webserver (Apache, Nginx usw.) http 301, http 302
quelle
Wie wäre es damit?
Idealerweise tun Sie dies jedoch auf der Serverseite.
quelle
quelle
Keine Javascript-Methode, um dies zu beantworten, aber wenn Sie CloudFlare verwenden, können Sie Seitenregeln schreiben , die den Benutzer viel schneller zu HTTPS umleiten, und es ist kostenlos. Sieht in den Seitenregeln von CloudFlare folgendermaßen aus:
quelle
Du kannst tun:
quelle
Funktionsweise
quelle
Sie sollten dies überprüfen: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests
Fügen Sie dieses Meta- Tag zu Ihrer index.html im Kopf hinzu
Hoffe es hat geholfen.
quelle
Ich mag die Antworten auf diese Frage. Aber um kreativ zu sein, möchte ich noch einen Weg teilen:
quelle
quelle
Hallo, ich habe diese Lösung verwendet, funktioniert perfekt. Keine Notwendigkeit zu überprüfen, verwenden Sie einfach https.
quelle
Ich habe gerade alle Skriptvarianten von Pui Cdm testen lassen , einschließlich der obigen Antworten und vieler anderer, die PHP, Htaccess, Serverkonfiguration und Javascript verwenden. Das Ergebnis ist, dass das Skript
Die von vivek-srivastava bereitgestellte Funktion funktioniert am besten und Sie können dem Java-Skript weitere Sicherheit hinzufügen.
quelle