我让我的 VanillaForums 论坛上的用户选择是否使用 https
协议(protocol),我想测试我是否可以使用 jQuery 在客户端更改图像源。
我希望此代码将图像源链接中的协议(protocol)更改为 //
而不是 http://
并在图像加载之前加载,所以我使用.ready()
:
$(document).ready(function () {
if (window.location.protocol == "https:") {
var $imgs = $("img");
$imgs.each(function () {
var img_src = $(this).prop("src");
if (img_src.indexOf("http://") < 0) return;
var new_img_src = img_src.replace("http:", "");
$(this).prop("src", new_img_src);
});
}
});
虽然它确实可以更改图像源,但 URL 栏仍然显示:
并且控制台发出警告,指出 http://someimageurl...
不安全。
我是否需要将代码移至页面顶部,否则不会有什么不同吗?
最佳答案
需要在服务器端完成,浏览器才不会抛出不安全的连接警告。负责代码的文件是/library/core/functions.render.php
,你可以看到here .
$PhotoURL
是需要更改的变量。使用以下确保所有图像都通过 https:
协议(protocol)加载:str_replace('http://', 'https://', $PhotoURL)
.
我通常不介意小型软件的全局范围,但在像 Vanilla 这样大的软件中,这就像大海捞针。
我找不到特别针对 Vanilla 的任何其他修复程序,所以我希望这对人们有所帮助。
关于javascript - 使不安全的图像源成为安全的客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27723406/