我有一个通过HTTP访问的页面。此页面使用HTTPS链接到同一服务器上的另一个页面。在使用相对URL时,使用HTML和/或Javascript强制转换为HTTPS的最优雅方式是什么?
基本上,我希望与protocol-relative URL相反。我想明确指定HTTPS WITHOUT将主机名硬编码到URL中。
我正在开发一个大型遗留网站,因此使用不显眼的javascript,对现有标记进行微小更改的解决方案是理想的选择。
我意识到在目的地页面上更好地执行HTTPS,但在这种情况下,这不是一个选项。
答案 0 :(得分:2)
$("a").each(function () {
this.href = "https://" + window.location.host + this.pathname + this.search + this.hash;
});
您可以提供一个更具体的选择器,以确保它不会弄乱您不打算更改的任何链接,但我知道这些要求,因此我将其留给您。
答案 1 :(得分:0)
我认为您必须自己从window.location
上的作品构建网址。
var path = anchor.href;
var httpsUrl = "https://" +
window.location.host +
(path.charAt(0) === '/' ? path : window.location.pathname + '/' + path);
或类似的东西(特别是如果有参数等)。
编辑 - 已经注意到现代浏览器会在您访问“href”值时返回完整的URL,这使得在这些情况下解决这个问题更加容易(因为您只需要修复协议前缀)。 (谢谢@Daniel!)