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