Также не сработал другой встроенный iframe с другого домена, который я разрешил.
В точности такой же встроенный iframe с того же домена работал в последний раз, когда я его пробовал, возможно, 6 месяцев или год назад. Сейчас у меня Discourse v3.3.1 +5 (стабильная ветка).
В последней версии ветки tests-passed iframe встраивается без проблем. Обратите внимание, что атрибуты style и title, которые вы установили, будут удалены Discourse. Однако вы можете установить атрибуты width и height. Например:
Failed to load resource: net::ERR_CONNECTION_REFUSED beacon.min.js:1
Но это, похоже, связано с моим DNS-черным списком. Когда я подключаюсь через VPN, ошибок нет. И кажется не случайностью, что другой пользователь с совершенно другим компьютером и сетью изначально сообщил мне об этой же проблеме.
Хорошо, Firefox показывает мне ещё одно сообщение в консоли:
Предоставлен доступ к разделённому cookie или хранилищу для «https://www.tickcounter.com/widget/countdown/4471981», так как он загружен в контексте третьей стороны и динамическое разделение состояния включено. [Узнать больше]
Также хочу упомянуть, что я вставил код iframe в шаблонный статический HTML-файл и открыл его в браузере, и iframe загрузился корректно.
Хорошо, этот iframe раньше у вас работал… Вы случайно не используете Cloudflare? Если да, то, возможно, стоит проверить, поможет ли отключение функции Speed Brain (если она включена). Я знаю, что это относительно новая функция.
Хм, да, похоже именно так. Но разве в Discourse не должно быть ошибки в /logs/?
Насколько я знаю, на сервере ничего не запущено, что могло бы это блокировать. Я использовал DNS провайдера хостинга в /etc/resolv.conf, и попробовал переключить его на 8.8.8.8, но это не изменило ситуацию с этой проблемой.
Только если это вызывает ошибку. Возможно, что-то блокирует это в рамках нормальной работы. Я думаю, стоит попытаться выяснить, что изменилось или какие изменения произошли в момент, когда это перестало работать. Мне интересно, не могло ли это быть связано с изменением политики безопасности контента (Content Security Policy).
Это DNS-сервис, который блокирует домены с плохой репутацией. Но дело не в этом, потому что: 1) когда я подключаюсь через VPN, используется другой DNS, и проблема сохраняется; 2) пользователь, сообщивший мне об этой проблеме, использует совершенно другую конфигурацию; 3) настройка DNS относится только к моей локальной сети, а не к серверу Discourse, который не может корректно генерировать HTML на стороне сервера; и 4) этот HTML-файл успешно загружает iframe:
Ого, вот оно что! Не хватало завершающего /.
Большое спасибо!
В Discourse что-то изменилось, потому что в прошлый раз, когда я пробовал это сделать, я добавил https://www.tickcounter.com, и тогда всё работало. На мой взгляд, нужно либо скорректировать логику регулярного выражения, либо уточнить описание настройки, поскольку в ней сказано:
Список префиксов доменов в атрибуте src для iframe, которые Discourse может безопасно разрешать в постах
Когда я слышу «префикс домена», я представляю имя домена и/или поддомен, ни одно из которых не включает /. Или же, если предполагается использование более точной логики для сложных URL в атрибуте src iframe, то описание должно звучать примерно так:
Список префиксов URL в атрибуте src для iframe, которые Discourse может безопасно разрешать в постах
Проблема заключается в ссылках, добавленных более 2 месяцев назад (до того, как был слит исправление безопасности). В то время вы не получали сообщение об ошибке, и даже ссылки по умолчанию не содержали третьего символа «/». Это уже вторая тема поддержки, связанная с этой проблемой: