Apakah ada cara untuk mendeteksi HTTP atau HTTPS dan kemudian memaksa penggunaan HTTPS dengan JavaScript?
Saya memiliki beberapa kode untuk mendeteksi HTTP atau HTTPS tetapi saya tidak bisa memaksanya untuk menggunakannya https:
.
Saya menggunakan properti window.location.protocol untuk mengatur apa pun situs tersebut untuk https:
kemudian menyegarkan halaman untuk semoga memuat ulang URL https'ed baru yang dimuat ke dalam browser.
if (window.location.protocol != "https:") {
window.location.protocol = "https:";
window.location.reload();
}
javascript
https
window.location
Pengguna Terdaftar
sumber
sumber
Jawaban:
Coba ini
location.href = blah
menambahkan pengalihan ini ke riwayat browser. Jika pengguna menekan tombol kembali, mereka akan diarahkan kembali ke halaman yang sama. Lebih baik digunakanlocation.replace
karena tidak menambahkan pengalihan ini ke riwayat browser.sumber
window
dan tidakdocument
?!==
?location.replace(url)
akan jauh lebih baik daripadalocation.href = url
untuk kasus ini. Anda tidak ingin pengalihan ini dalam riwayat browser atau pengguna menekan tombol kembali hanya untuk diarahkan kembali.Pengaturan location.protocol menavigasi ke URL baru . Tidak perlu menguraikan / mengiris apa pun.
Firefox 49 memiliki bug di mana
https
bekerja tapihttps:
tidak. Dikatakan telah diperbaiki di Firefox 54 .sumber
if window.location.href.match('http:') window.location.href = window.location.href.replace('http', 'https')
bekerja pada FF dan Chrome terbaru.location.protocol = "https";
tampaknya bekerja meskipun di firefox 28location.replace
sebagai gantinya.Ini bukan ide yang baik karena Anda hanya mengarahkan sementara pengguna ke https dan browser tidak menyimpan redirect ini.
Anda menjelaskan tugas untuk web-server (apache, nginx dll) http 301, http 302
sumber
Bagaimana dengan ini?
Idealnya Anda akan melakukannya di sisi server.
sumber
sumber
Bukan cara Javascript untuk menjawab ini tetapi jika Anda menggunakan CloudFlare Anda bisa menulis aturan halaman yang mengarahkan pengguna lebih cepat ke HTTPS dan gratis. Sepertinya ini dalam Aturan Halaman CloudFlare:
sumber
Anda dapat melakukan:
sumber
Cara fungsional
sumber
Anda harus memeriksa ini: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/upgrade-insecure-requests
Tambahkan tag meta ini ke index.html di dalam kepala Anda
Semoga ini bisa membantu.
sumber
Saya suka jawaban untuk pertanyaan ini. Tetapi untuk menjadi kreatif, saya ingin berbagi satu cara lagi:
sumber
sumber
sumber
Hai saya menggunakan solusi ini bekerja dengan sempurna. Tidak Perlu memeriksa, cukup gunakan https.
sumber
Saya baru saja menguji semua variasi skrip oleh Pui Cdm , termasuk jawaban di atas dan banyak lainnya menggunakan php, htaccess, konfigurasi server, dan Javascript, hasilnya skrip
disediakan oleh vivek-srivastava berfungsi paling baik dan Anda dapat menambahkan keamanan lebih lanjut dalam skrip java.
sumber