Czy jest jakiś sposób na wykrycie HTTP lub HTTPS, a następnie wymuszenie użycia HTTPS z JavaScript?
Mam pewne kody do wykrywania HTTP lub HTTPS, ale nie mogę zmusić go do użycia https:
.
Korzystam z właściwości window.location.protocol, aby ustawić dowolną witrynę, https:
a następnie odświeżyć stronę i, mam nadzieję, ponownie załadować nowy adres URL https załadowany do przeglądarki.
if (window.location.protocol != "https:") {
window.location.protocol = "https:";
window.location.reload();
}
javascript
https
window.location
zarejestrowany użytkownik
źródło
źródło
Odpowiedzi:
Spróbuj tego
location.href = blah
dodaje to przekierowanie do historii przeglądarki. Jeśli użytkownik naciśnie przycisk Wstecz, zostanie przekierowany z powrotem na tę samą stronę. Lepiej jest używać,location.replace
ponieważ nie dodaje tego przekierowania do historii przeglądarki.źródło
window
niedocument
?!==
?location.replace(url)
byłoby znacznie lepiej niżlocation.href = url
w tym przypadku. Nie chcesz, aby to przekierowanie w historii przeglądarki lub użytkownik naciskał przycisk Wstecz, aby ponownie zostać przekierowanym.Ustawienie location.protocol powoduje przejście do nowego adresu URL . Nie trzeba parsować / kroić niczego.
Firefox 49 ma błąd, w którym
https
działa, alehttps:
nie działa. Podobno zostanie naprawiony w Firefox 54 .źródło
if window.location.href.match('http:') window.location.href = window.location.href.replace('http', 'https')
działa na najnowszych FF i Chrome.location.protocol = "https";
wydaje się, że działa w Firefox 28location.replace
zamiast tego.To nie jest dobry pomysł, ponieważ chwilowo przekierowujesz użytkownika do https, a przeglądarka nie zapisuje tego przekierowania.
Opisujesz zadanie dla serwera WWW (apache, nginx itp.) Http 301, http 302
źródło
Co powiesz na to?
Idealnie byłoby to zrobić po stronie serwera.
źródło
źródło
Nie jest to metoda Javascript, aby odpowiedzieć na to pytanie, ale jeśli używasz CloudFlare, możesz pisać reguły strony, które przekierowują użytkownika znacznie szybciej do HTTPS i jest bezpłatne. Wygląda to tak w Regułach strony CloudFlare:
źródło
Możesz to zrobić:
źródło
Funkcjonalny sposób
źródło
Powinieneś to sprawdzić: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests
Dodaj ten metatag do swojego index.html wewnątrz głowy
Mam nadzieję, że to pomogło.
źródło
Lubię odpowiedzi na to pytanie. Ale aby być kreatywnym, chciałbym podzielić się jeszcze jednym sposobem:
źródło
źródło
Cześć, użyłem tego rozwiązania, działa idealnie. Nie trzeba sprawdzać, wystarczy użyć https
źródło
Właśnie przetestowałem wszystkie warianty skryptu przetestowane przez Pui Cdm , w tym odpowiedzi powyżej i wiele innych przy użyciu php, htaccess, konfiguracji serwera i Javascript, wyniki są takie, że skrypt
dostarczone przez vivek-srivastava działa najlepiej i możesz dodać dodatkowe bezpieczeństwo w skrypcie Java.
źródło