观察
从包含广告位的https提供单页应用程序网页。这些广告位由一些出价逻辑填充,广告由JavaScript编写在IFRAME文档中。
首次加载显示广告图片,例如https://tpc.googlesyndication.com/pagead/imgad?id=CICAgKDLu47R8QEQARgBMggW4D7gy4qb5g
当用户在页面上操作时,会发生新的广告出价并重新加载广告位。在我们的示例中:呈现具有相同img
属性的src
元素。
所有其他浏览器(Chrome,IE,Safari)都显示此图片,取自本地缓存。
不是这样:Firefox(Windows,Mac;版本52)的行为如下:
alt
文字img
上的工具提示说“错误加载图片”(我完全知道德语信息)304
或“来自缓存”)其他信息:
https
示例
在下一页上你可以看到错误(我想这是一个FireFox错误):
http://bartelt.team.netzathleten-media.de/2017-03-30_MD-230-refresh-bug/
5秒后广告消失(仅限FireFox)。
问题
你能告诉我一些可能导致这个问题的原因吗?
有没有办法以某种方式调试onerror
由外国代码动态创建的图像(来自广告服务器)?
这真的很奇怪,我非常感谢你的帮助。
答案 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中无效的事实有关...