Я замечаю довольно много неправильно настроенных сайтов, которые, похоже, используют различные методы для блокировки «горячих» ссылок на изображения, но при этом возвращают ссылки на такие изображения в данных для встраивания, например:
Проверив через http://debug.iframely.com/, я действительно считаю, что это не проблема самого Discourse, но выглядит это плохо.
Одна из идей: создание onebox могло бы загружать изображение при обработке поста и либо сохранять миниатюру для последующего отображения, либо, если загрузка не удалась, вести себя так, будто изображение не было указано.
Сохранение копии изображения было бы достаточно надежным и устойчивым к будущим изменениям решением. Я считаю, что это должно подпадать под понятие добросовестного использования в целях авторского права (оригинальный сайт не пострадает от повторного использования миниатюры размером 130x90, полученной из метаданных, хотя я не юрист).
Если это невозможно, я попробовал создать компонент, который перехватывал бы событие ошибки при загрузке изображений и добавлял класс для скрытия их или их обертки через display:none. У меня пока не получилось, так как я застрял в decorateCookedElement()… Не уверен, что ищу в правильном месте.
Так что, только я ли страдаю от битых изображений в onebox-ах, или у кого-то ещё есть обходное решение?
Разве мы уже не делаем этого? Проверьте свой пост ещё раз!
Очевидно, что это происходит не в момент обработки, поскольку на этот критический путь нельзя добавлять веб-запросы, но мы ставим это в очередь и загружаем изображение однобокса в фоновом режиме.
Мы ждём «период редактирования с прощением ошибок» (по умолчанию 300 секунд), чтобы загрузить его, если включена опция «загружать удалённые изображения локально» (по умолчанию true).
Важно быть осторожным и обдумывать последствия при изменении настроек по умолчанию. Мы поставляем продукт с оптимальными настройками «из коробки», и отклонение от них может привести к непредвиденным последствиям.
Это справедливое замечание. Обычно я придерживаюсь настроек по умолчанию, но в данном случае, похоже, эту настройку изменил предыдущий администратор — не знаю, зачем.
Надеюсь, теперь эта настройка обеспечит сохранение изображений в onebox для Instagram.