Firefox不会显示仅缓存alt文本的图像

时间:2017-04-24 16:48:56

标签: html image debugging firefox

观察

从包含广告位的https提供单页应用程序网页。这些广告位由一些出价逻辑填充,广告由JavaScript编写在IFRAME文档中。

首次加载显示广告图片,例如https://tpc.googlesyndication.com/pagead/imgad?id=CICAgKDLu47R8QEQARgBMggW4D7gy4qb5g

当用户在页面上操作时,会发生新的广告出价并重新加载广告位。在我们的示例中:呈现具有相同img属性的src元素。

所有其他浏览器(Chrome,IE,Safari)都显示此图片,取自本地缓存。

不是这样:Firefox(Windows,Mac;版本52)的行为如下:

  • 在白色背景上显示alt文字
  • 图片未显示:它会消失,但它是完全相同的图片,网址相同
  • 使用开发者工具时,img上的工具提示说“错误加载图片”(我完全知道德语信息)
  • 网络标签不显示此图片上的任何活动(也没有304或“来自缓存”)

其他信息:

  • 没有可以隐藏图像的CSS活动/更改(实际上这个img周围没有CSS)。
  • 没有其他JavaScript(例如延迟加载)
  • 没有广告拦截器
  • 所有资源都是从https
  • 加载的
  • 控制台中未记录任何错误
  • 首页加载页面显示图片
  • 所有其他浏览器都没问题,从不。

示例

在下一页上你可以看到错误(我想这是一个FireFox错误):

http://bartelt.team.netzathleten-media.de/2017-03-30_MD-230-refresh-bug/

5秒后广告消失(仅限FireFox)。

问题

你能告诉我一些可能导致这个问题的原因吗?

有没有办法以某种方式调试onerror由外国代码动态创建的图像(来自广告服务器)?

这真的很奇怪,我非常感谢你的帮助。

2 个答案:

答案 0 :(得分:4)

非常有趣的问题。一定要拉你的头发。使用缩小代码给出解决方案是非常困难的,但我可以告诉你我所观察到的内容,也许它会有所帮助。

观察1:

我也在其他一些浏览器中试过这个。似乎safari 9.1.1(注意:10.1中没有问题)也失败了,但是给出了更有意义的错误消息。这似乎是CORS的一个问题,以及不同的浏览器如何缓存。在chrome中,似乎图像被缓存在firefox和safari中,而不是。当代码轮询(来自广告内)时,它试图从http://tpc.googlesyndication.com加载内容,而这些“问题浏览器”认为这是违反CORS的。为什么它会首先加载?很难说没有源代码。

如果在5秒后加载不同的广告,我会有兴趣看看会发生什么。

无论如何,这是来自safari的错误:

openssl x509 -in /path/to/your.crt -noout -text

观察2:

你说加载过ssl。反正不是在safari 9.1中。看到上面的错误。 Your ssl certificate is all sorts of bad我首先要解决这个问题。看起来它是自签名的吗?无论如何,看看here,看起来这可能会让你陷入CORS地狱。

祝你好运,我希望这会有所帮助。 CORS和SSL真的很难处理。特别是现代浏览器在不使用https和/或混合内容时变得更加严格。

答案 1 :(得分:0)

这可能与content:url("image")在firefox中无效的事实有关...

Content url does not display image on firefox browser