Обнаруживать HTTP или HTTPS, а затем принудительно HTTPS в JavaScript

Есть ли способ обнаружить HTTP или HTTPS, а затем принудительно использовать HTTPS с JavaScript?

У меня есть несколько кодов для обнаружения HTTP или HTTPS, но я не могу заставить его использовать https:.

Я использую свойство window.location.protocol, чтобы установить, что сайт находится в https:, а затем обновите страницу, чтобы, надеюсь, перезагрузить новый URL https, загруженный в браузер.

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

Ответ 1

Попробуйте это

if (location.protocol != 'https:')
{
 location.href = 'https:' + window.location.href.substring(window.location.protocol.length);
}

Ответ 3

Это не очень хорошая идея, потому что вы просто временно перенаправляете пользователя на https, а браузер не сохраняет это перенаправление.

Вы описываете задачу для веб-сервера (apache, nginx и т.д.) http 301, http 302

Ответ 4

Как насчет этого?

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

В идеале вы делаете это на стороне сервера.

Ответ 5

if (location.protocol == 'http:')
  location.href = location.href.replace(/^http:/, 'https:')

Ответ 6

Не ответ на Javascript, но если вы используете CloudFlare, вы можете написать правила страницы, которые перенаправляют пользователя намного быстрее на HTTPS, и это свободно. Похоже, это в Правила страницы CloudFlare:

введите описание изображения здесь

Ответ 7

Функциональный способ

window.location.protocol === 'http:' && (location.href = location.href.replace(/^http:/, 'https:'));

Ответ 8

Ты можешь сделать:

  <script type="text/javascript">        
        if (window.location.protocol != "https:") {
           window.location.protocol = "https";
        }
    </script>

Ответ 9

<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>

Ответ 10

Привет, я использовал это решение работает отлично. Нет необходимости проверять, просто используйте https.

<script language="javascript" type="text/javascript">
document.location="https:" + window.location.href.substring(window.location.protocol.length, window.location.href.length);
</script>

Ответ 11

Я только что использовал все script варианты, протестированные Pui Cdm, включил ответы выше и многие другие, используя php, htaccess, server конфигурации и Javascript, результаты состоят в том, что script

<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> 

предоставляется vivek-srivastava работает лучше всего, и вы можете добавить дополнительную безопасность в java script.