Firefox не отображает изображение из кеша только текст
Наблюдение
Существует одна веб-страница приложения с одной страницей, которая хранится в https, содержащем рекламные места. Эти рекламные места заполняются определенной логикой торгов, а объявления записываются в документах IFRAME с помощью JavaScript.
Первая загрузка показывает изображение объявления, например. 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
изображений, созданных динамически с помощью внешнего кода (исходящего с сервера объявлений)?
Это действительно странно, и я высоко ценю вашу помощь.
Ответы
Ответ 1
Действительно интересный вопрос. Должно быть, ты потянул свои волосы. Очень сложно дать решение с мини-кодом, но я могу рассказать вам, что я наблюдал, и, возможно, это поможет.
Наблюдение 1:
Я попробовал это и в других браузерах. Кажется, что сафари 9.1.1 (примечание: отсутствие проблемы в 10.1) не удается, но дает более значимое сообщение об ошибке. Казалось бы, это проблема с CORS и как разные кеши браузеров. В хроме кажется, что изображение получает кеширование, где в firefox и safari это не так. Когда опрос кода (из объявления) пытается загрузить контент из http://tpc.googlesyndication.com, который, по мнению этих "проблемных браузеров", является нарушением CORS. Почему он будет загружаться в первую очередь? Трудно сказать без исходного кода.
Мне было бы интересно узнать, что произойдет, если через 5 секунд будет загружено другое объявление.
В любом случае, здесь ошибка сафари:
Blocked 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.
dc — mtrcs_533746.js:50:368
(anonymous function) — 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
(anonymous function) — mtrcs_533746.js:26:214
U — mtrcs_533746.js:22
(anonymous function) — mtrcs_533746.js:22:103
(anonymous function) — mtrcs_533746.js:84:424
Наблюдение 2:
Вы говорите, загружено через ssl. Не в сафари 9.1 в любом случае. См. Приведенную выше ошибку. Ваш сертификат ssl - это все виды плохого. Начну с исправления. Похоже, что он подписан сам? В любом случае, посмотрите здесь, похоже, что это может привести вас в ад КОРС.
Удачи, надеюсь, это поможет. CORS и SSL могут быть очень больны. Особенно с современными браузерами, которые становятся более строгими, не используя https и/или смешанный контент.
Ответ 2
Это может быть связано с тем, что content:url("image")
не работает в firefox...
URL-адрес контента не отображает изображение в браузере Firefox