0

在我的 https 应用程序中,我正在加载一些图像。如果 Img src 不可用,我将显示默认图像 - 我得到的这个 js 也可以为 IE 完成工作:

$(document).ready(function(){
  $("img").each(function(index) {
    $(this).error(function() {
      this.src = "/shared/ts/web/images/missing_img.gif";
    });
    $(this).attr("src", $(this).attr("src"));
  });
});

它适用于 IE10,但对于 IE8,我有一个安全警告:

您只想查看安全传送的网页内容吗?

如果单击“是”-> 我看不到 missing_img.gif,如果单击“否”则一切正常。

你能告诉我为什么我会收到这个警告,我该怎么做才能删除它?我不想更改客户端默认的 IE8 设置。

4

2 回答 2

1

这是因为您的图像(因为您没有将 https:// 指定为协议)获取 http:// 协议。

由于这在您的安全站点上,它会尝试加载“ http://domain.com/shared/ts/web/images/missing_img.gif ”,这是“安全站点上的不安全内容”

我认为您可以通过将路径设为绝对路径(包括它的整个部分,包括https://your-domain.com)或使用“//”(双斜杠)并省略 http(s): 部分来解决此问题,因此它将采用与站点相同的协议(当站点安全时为 https,否则为 http)。

于 2013-06-26T07:58:32.407 回答
1

从外观上看,您并没有通过 https 提供该特定图像。任何不是由 https 传递的资源都可能在传输过程中被攻击者修改或读取。这会在某些浏览器中引发错误,而其他浏览器(例如 Chrome)会在 url 中“划掉”您的“https”位,以表明并非所有元素都是安全的。

要修复它,请确保您提供的所有资源都通过 https。所以在这种情况下,你可能想通过这样做来强制它

this.src = "https://mysite.com/shared/ts/web/images/missing_img.gif";

我不完全确定为什么这不会自动使用 https。也许其他人可以在那个方面启发你。

于 2013-06-26T07:54:32.507 回答