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

hgo*_*ebl 12 html debugging firefox image

意见

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

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

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

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

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

  • 显示alt在白色背景的文本
  • 图像不会显示:它会消失,但它是完全相同的图像,具有相同的URL
  • 当使用开发人员工具时,工具提示会img说"错误加载图像"(我完全知道德语信息)
  • 网络选项卡不显示此图像上的任何活动(也没有304或"从缓存")

附加信息:

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

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

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

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

问题

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

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

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

klv*_*lvs 4

非常有趣的问题。一定要让你拔头发。很难用精简的代码提供解决方案,但我可以告诉你我观察到的情况,也许会有所帮助。

\n\n

观察1:

\n\n

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

\n\n

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

\n\n

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

\n\n

\nBlocked a frame with origin "http://bartelt.team.netzathleten-media.de" from accessing a frame with origin "http://tpc.googlesyndication.com". Protocols, domains, and ports must match.\ndc \xe2\x80\x94 mtrcs_533746.js:50:368\n(anonymous function) \xe2\x80\x94 mtrcs_533746.js:23:281\nq \xe2\x80\x94 mtrcs_533746.js:85:503\nsd \xe2\x80\x94 mtrcs_533746.js:23:233\nwd \xe2\x80\x94 mtrcs_533746.js:24\nnb \xe2\x80\x94 mtrcs_533746.js:26:154\n(anonymous function) \xe2\x80\x94 mtrcs_533746.js:26:214\nU \xe2\x80\x94 mtrcs_533746.js:22\n(anonymous function) \xe2\x80\x94 mtrcs_533746.js:22:103\n(anonymous function) \xe2\x80\x94 mtrcs_533746.js:84:424\n

\n\n

观察2:

\n\n

你说的是通过ssl加载的。无论如何,Safari 9.1 中没有。请参阅上面的错误。你的 ssl 证书有各种各样的问题,我会首先解决这个问题。看起来像是自签名的?无论如何,请看这里,看起来这可能会让你陷入 CORS 地狱。

\n\n

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

\n