从包含广告位的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和/或混合内容.