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


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

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

Я использую

9 230

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 и браузер не сохраняет это перенаправление.

вы опишете задачу для веб-серверов (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

Привет я использовал это решение работает perfectly.No нужно проверить, просто используйте 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.