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

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

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

Я использую

9 ответов


попробуй такое

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

настройки местоположения.протокол переходит к новому URL. Нет необходимости анализировать / нарезать что-либо.

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

Firefox 49 имеет ошибка здесь https работает, а https: нет. Говорят,исправлено в Firefox 54.


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

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


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

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

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


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

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

enter image description here


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

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

приветствует BrAiNee


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

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

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

предоставлен Вивек-Сривастава работает лучше всего, и вы можете добавить дополнительную безопасность в Java script.