iOS иногда не загружает CSS при навигации между поддоменами

Кажется, это происходит только на устройствах iOS — иногда внешние ссылки открываются в том же окне, но CSS не загружается. Странно, и я даже не могу воспроизвести проблему!

Выглядит это так:

Также нашёл сообщения на других публичных форумах Discourse:

Поскольку это уже сообщалось и исправлялось ранее, не связано ли это, возможно, с темой или компонентом темы? Буду благодарен за любую помощь.

3 лайка

Какие ошибки отображаются в сетевых логах, когда CSS не загружается?

Что касается теоретической возможности проблемы с темой или компонентом, пробовали ли вы безопасный режим?

1 лайк

Нет, просто потому что я наблюдал такое поведение несколько раз за последние две недели — только на своём iPhone. Пользователи тоже сообщали о том же, но воспроизвести проблему не удаётся, кажется, это происходит случайно.

1 лайк

Похоже, это старая ошибка. В данный момент воспроизвести её нигде не удаётся, и все связанные темы датированы как минимум годом назад. Похоже, что форум не обновляется.

2 лайка

Спасибо, но у меня уже установлена последняя бета-версия обновления :frowning:

Что было исправлено в том баге? Интересно, не какой-то ли компонент или тема снова вызвали эту проблему?

1 лайк

Я пытаюсь воспроизвести это снова — похоже, это случается периодически, не уверен, как именно воспроизвести. Но это действительно происходит, насколько мне известно, только в iOS.

1 лайк

Я использую несколько устройств iOS: iPhone 15 Pro Max, iPad Air 5-го поколения и MacBook Air M2, но не могу воспроизвести эту проблему :thinking:

Какая у вас модель устройства и версия iOS?

1 лайк

Лично у меня iPhone 12 с последней iOS 17.4.

Это происходит только со ссылками, использующими HTML-тег , и даже тогда — лишь время от времени.

Хотелось бы узнать, какой именно баг был исправлен — возможно, я смогу попытаться воспроизвести проблему.

1 лайк

Как эти сообщения связаны с проблемами CSS на форумах Discourse? В первом из них прямо указано:

форум не затронут этой проблемой

1 лайк

Похоже, это то же самое поведение — это происходит при открытии внешнего веб-сайта изнутри Discourse. Например, открытие https://discourse.org/ с meta.discourse.org.

Значит, это звучит не как проблема, вызванная форумом, если проблемы возникают на внешних сайтах.

Я тоже так думал, однако, похоже, это происходит только при переходе с форума. Так как я нашёл другие похожие сообщения, подумал, что кто-то может пролить свет на эту проблему — возможно, это баг iOS. Было бы проще, если бы CSS не загружался каждый раз, а только иногда :sweat_smile:

1 лайк

@Lilly, интересно, не могли бы вы рассказать, как Discourse обрабатывает атрибут href, и есть ли какие-то особенности для iOS? Похоже, это проблема, связанная с Safari, но она возникает только при переходе из Discourse на другой домен. Этот другой домен загружается так, будто Discourse пытается загрузить HTML запрашиваемой страницы локально.

Мы уже пробовали принудительно устанавливать политику отсутствия кэширования и экспериментировали с префиксом www, но ничего не помогает. Проблема точно такая же, как описано здесь:

У них основной сайт загружался с их community.URL.com, что приводило к аналогичной частичной загрузке страницы.

Заранее спасибо!

Наш Discourse размещен на поддомене (here.domain.com) нашего основного сайта (domain.com).

Уже несколько месяцев пользователи iPhone сообщают, что при переходе по ссылкам с поддомена (Discourse) обратно на основной сайт страница может не загружать CSS или JS-файлы, а только HTML, из-за чего она становится непригодной для использования.

Это происходит не каждый раз, но достаточно часто, чтобы пользователям приходилось перезагружать страницу для исправления ситуации. При перезагрузке они фактически остаются в Discourse, поэтому им нужно снова нажать на ссылку.

Просматривая файл access.log сервера nginx, мы видим, что по какой-то причине Discourse пытается запросить файлы основного домена вместо индексной страницы основного домена.
Само собой разумеется, что у Discourse этих файлов нет, поэтому страница оказывается сломанной.

Вот пример из файла “access.log” nginx:

[19/May/2024:09:49:51 +0000] "here.domain.com" 176.76.227.47 "GET /js/cart/cart.js?v=0.32 HTTP/2.0" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Ribblr Mobile" "-" 429 230 "https://here.domain.com/c/testing/17" - 0.000 "-" "-" "-" "-" "-" "-" "-"

[19/May/2024:09:49:51 +0000] "here.domain.com" 176.76.227.47 "GET /css/footer_and_header.css?v=1.13 HTTP/2.0" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Ribblr Mobile" "-" 404 7963 "https://here.domain.com/c/testing/17" 0.019 0.019 "-" "-" "-" "-" "-" "-" "-"
[19/May/2024:09:49:51 +0000] "here.domain.com" 176.76.227.47 "GET /css/common/jssocials.css?v=0.03 HTTP/2.0" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Ribblr Mobile" "-" 404 7968 "https://here.domain.com/c/testing/17" 0.020 0.020 "-" "-" "-" "-" "-" "-" "-"
[19/May/2024:09:49:51 +0000] "here.domain.com" 176.76.227.47 "GET /js/common/lightslider.js?v=0.14 HTTP/2.0" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Ribblr Mobile" "-" 404 7980 "https://here.domain.com/c/testing/17" 0.020 0.020 "-" "-" "-" "-" "-" "-" "-"
[19/May/2024:09:49:51 +0000] "here.domain.com" 176.76.227.47 "GET /js/common/jssocials.js HTTP/2.0" "Mozilla/5.0 (iPhone; CPU iPhone OS 17_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Ribblr Mobile" "-" 404 7978 "https://here.domain.com/c/testing/17" 0.034 0.034 "-" "-" "-" "-" "-" "-" "-"

Мы пробовали использовать как обычные ссылки href, так и window.reload(), но проблема сохраняется. Еще раз: это происходит только время от времени и только у пользователей iPhone.

Есть ли у кого-то идеи, почему это происходит и как это исправить?

1 лайк

Это та же проблема, которую вы описали здесь?

1 лайк

Да! Это нужно слить :sweat_smile:

Думаю, теперь мы лучше понимаем, в чём проблема.

2 лайка

Интересно, есть ли у кого-то из членов команды какие-либо мысли? @Lilly, я знаю, что мы обсуждали это здесь несколько месяцев назад — возможно, у вас есть дополнительные идеи, которыми можно поделиться?

Думаю, это та же проблема, что и на сайте Discourse, о котором я писал в своём первом посте.

Мы столкнулись с подобными странными проблемами. Насколько нам известно, это ошибка в Safari/WebKit. Отображение такого рода «смешанного сайта» не должно быть возможным. Мы направили отчёт в WebKit. (cc @pmusaraj)

Если кто-то сможет найти надёжный способ воспроизвести проблему, это, скорее всего, поможет ускорить работу над исправлением ошибки.

6 лайков

Есть какие-то идеи для обхода внешней ссылки?
Оба HTML HREF и JS window.replace ведут себя одинаково :frowning:
(Я уверен, что переопределить кнопки Вперёд/Назад практически невозможно)

1 лайк

К сожалению, у меня нет идей для обходного пути. Я попробовал отменить регистрацию service workers на случай, если это была причина конфликта, но это не помогло.

В настоящее время я перешёл на Safari Technology Preview локально. Похоже, что проблема там отсутствует, что может указывать на то, что она исправлена в более новых версиях WebKit. Или же это означает, что свежий браузер с чистым кешем не сталкивается с этой проблемой… сложно сказать.

Мы будем отслеживать ситуацию и продолжать поиск исправлений; проблема затрагивает нескольких сотрудников команды Discourse и проявляется на разных платформах (macOS, iOS, приложение DiscourseHub). Если не найдётся волшебное решение, лучшее, что мы можем сделать, — это следить за отчётом об ошибке в WebKit и при необходимости добавлять туда дополнительную информацию.

2 лайка