Ответ 1
Попробуйте это
if (location.protocol != 'https:')
{
location.href = 'https:' + window.location.href.substring(window.location.protocol.length);
}
Есть ли способ обнаружить 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();
}
Попробуйте это
if (location.protocol != 'https:')
{
location.href = 'https:' + window.location.href.substring(window.location.protocol.length);
}
Настройка location.protocol позволяет перейти к новому 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:
Функциональный способ
window.location.protocol === 'http:' && (location.href = location.href.replace(/^http:/, 'https:'));
Ты можешь сделать:
<script type="text/javascript">
if (window.location.protocol != "https:") {
window.location.protocol = "https";
}
</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>
Привет, я использовал это решение работает отлично. Нет необходимости проверять, просто используйте https.
<script language="javascript" type="text/javascript">
document.location="https:" + window.location.href.substring(window.location.protocol.length, window.location.href.length);
</script>
Я только что использовал все 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.