Подтвердить что ты не робот

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 изображений, созданных динамически с помощью внешнего кода (исходящего с сервера объявлений)?

Это действительно странно, и я высоко ценю вашу помощь.

4b9b3361

Ответ 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 и/или смешанный контент.