Rileva HTTP o HTTPS quindi forza l'HTTPS in JavaScript


Answers

Impostazione location.protocol passa a un nuovo URL . Non c'è bisogno di analizzare / tagliare nulla.

if (location.protocol !== "https:") location.protocol = "https:";

Firefox 49 ha un bug cui funziona https: ma https: no. Detto per essere risolto in Firefox 54 .

Question

C'è un modo per rilevare HTTP o HTTPS e quindi forzare l'uso di HTTPS con JavaScript?

Ho alcuni codici per rilevare l'HTTP o l'HTTPS ma non posso forzare l'uso di https:

Sto usando la proprietà window.location.protocol per impostare qualsiasi sito https: quindi aggiorna la pagina per ricaricare, auspicabilmente, un nuovo URL https caricato nel browser.

if (window.location.protocol != "https:") {
   window.location.protocol = "https:";
   window.location.reload();
}



<script type="text/javascript">
        function showProtocall() {

            if (window.location.protocol != "https") {
                window.location = "https://" + window.location.href.substring(window.location.protocol.length, window.location.href.length);
                window.location.reload();
            }
        }
        showProtocall();
</script>



Non è un modo Javascript per rispondere a questa domanda, ma se si utilizza CloudFlare è possibile scrivere regole di pagina che reindirizzano l'utente molto più rapidamente a HTTPS ed è gratuito. Assomiglia a questo nelle regole della pagina di CloudFlare:




Cosa ne pensi di questo?

if (window.location.protocol !== 'https:') {
    window.location = 'https://' + window.location.hostname + window.location.pathname + window.location.hash;
}

Idealmente lo faresti dal lato server, però.




Related