[javascript] JavaScript에서 HTTP 또는 HTTPS를 감지 한 후 강제로 HTTPS

HTTP 또는 HTTPS를 감지 한 다음 JavaScript를 사용하여 HTTPS를 강제로 사용하는 방법이 있습니까?

HTTP 또는 HTTPS를 감지하는 데 필요한 코드가 있지만 강제로 사용할 수는 없습니다 https:.

window.location.protocol 속성을 사용하여 사이트가 무엇이든 설정 https:한 다음 페이지를 새로 고쳐 브라우저에로드 된 새로운 https URL을 다시로드하십시오.

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



답변

이 시도

if (location.protocol !== 'https:') {
    location.replace(`https:${location.href.substring(location.protocol.length)}`);
}

location.href = blah이 리디렉션을 브라우저 기록에 추가합니다. 사용자가 뒤로 버튼을 누르면 동일한 페이지로 다시 리디렉션됩니다. location.replace브라우저 기록에이 리디렉션을 추가하지 않으므로 사용하는 것이 좋습니다 .


답변

location.protocol을 설정하면 새 URL로 이동합니다 . 아무것도 파싱 / 슬라이스 할 필요가 없습니다.

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

Firefox 49에는 작동하지만 작동 하지 않는 버그https있습니다 https:. Firefox 54에서 수정 되었다고합니다 .


답변

사용자를 일시적 으로 https로 리디렉션하고 브라우저는이 리디렉션을 저장하지 않기 때문에 좋지 않습니다.

웹 서버 (아파치, 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:')


답변

이에 대한 자바 스크립트 방법은 아니지만 CloudFlare를 사용하는 경우 사용자를 훨씬 빠르게 HTTPS로 리디렉션하는 페이지 규칙 을 작성할 수 있으며 무료입니다. CloudFlare의 페이지 규칙에서 다음과 같습니다.

여기에 이미지 설명을 입력하십시오


답변

넌 할 수있어:

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