html – Firefox不显示来自缓存的图像只有alt文本

意见

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

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

用户在网页上行为时,会出现新的广告出价,并重新加载广告位.在我们的例子中:渲染具有相同src属性的img元素.

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

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

>在白色背景上显示替代文字
>图像不显示:它消失,虽然它是完全相同的图像与相同的URL
>当使用开发人员工具时,img上的工具提示会说“加载图像错误”(我完全知道德语消息)
>网络标签不会显示此图像上的任何活动(也没有304或“从缓存”)

附加信息:

>没有CSS活动/改变可以隐藏图像(实际上,在这个img,根本没有CSS).
>没有额外的JavaScript(例如延迟加载)
>没有广告拦截者出席
>所有资源都从https加载
>控制台中没有记录错误
>首页加载页面显示图像
>所有其他浏览器没有问题,从来没有.

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

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

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

问题

你能给我一些建议,可能是这个问题的原因吗?

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

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

解决方法

真的很有趣的问题.必须把你的头发拉出来.使用最小化的代码提供解决方案是非常困难的,但是我可以告诉你我观察到了什么,也许会有所帮助.

观察1:

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

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

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

阻止原点“http://bartelt.team.netzathleten-media.de”的框架访问原始框架“http://tpc.googlesyndication.com”.协议,域和端口必须匹配.
dc – mtrcs_533746.js:50:368
(匿名函数) – mtrcs_533746.js:23:281
q – mtrcs_533746.js:85:503
sd – mtrcs_533746.js:23:233
wd – mtrcs_533746.js:24
nb – mtrcs_533746.js:26:154
(匿名函数) – mtrcs_533746.js:26:214
U – mtrcs_533746.js:22
(匿名功能) – mtrcs_533746.js:22:103
(匿名函数) – mtrcs_533746.js:84:424

观察2:

你说通过ssl加载反正不在徒步旅行9.1.看到上面的错误. Your ssl certificate is all sorts of bad我会从这个修改开始.它看起来像是自己签名的?无论如何,看看here,它看起来像可以给你在CORS地狱.

祝你好运,希望这有帮助. CORS和SSL可以真的很难处理.特别是现代浏览器越来越严格,不使用https和/或混合内容.

相关文章

vue阻止冒泡事件 阻止点击事件的执行 <div @click=&a...
尝试过使用网友说的API接口获取 找到的都是失效了 暂时就使用...
后台我拿的数据是这样的格式: [ {id:1 , parentId: 0, name:...
JAVA下载文件防重复点击,防止多次下载请求,Cookie方式快速简...
Mip是什么意思以及作用有哪些