Detect HTTP or HTTPS then force HTTPS in JavaScript
Is there any way to detect HTTP or HTTPS and then force usage of HTTPS with JavaScript?
I have some codes for detecting the HTTP or HTTPS but I can't force it to use https:
.
I'm using the window.location.protocol property to set whatever the site is to https:
then refresh the page to hopefully reload a new https'ed URL loaded into the browser.
if (window.location.protocol != "https:") {
window.location.protocol = "https:";
window.location.reload();
}
Solution 1:
Try this
if (location.protocol !== 'https:') {
location.replace(`https:${location.href.substring(location.protocol.length)}`);
}
location.href = blah
adds this redirect to the browser history. If the user hits the back button, they will be redirected back to the the same page. It is better to use location.replace
as it doesn't add this redirect to the browser history.
Solution 2:
Setting location.protocol navigates to a new URL. No need to parse/slice anything.
if (location.protocol !== "https:") {
location.protocol = "https:";
}
Firefox 49 has a bug where https
works but https:
does not. Said to be fixed in Firefox 54.