处理来自配置错误的网站的损坏的 onebox 图片

我注意到有很多配置不当的网站,它们似乎采用了各种方法来阻止图片的“热链接”,但在嵌入数据中却仍然返回了这些图片的链接,例如:

通过 http://debug.iframely.com/ 检查后,我真心认为这本身并不是 Discourse 的问题,但看起来确实不太美观。

一个想法是,在生成帖子时,onebox 的创建过程可以获取图片,然后要么存储缩略图以供后续使用,要么如果无法获取,则表现得像没有指定图片一样。

存储图片副本将相当稳健且具有前瞻性,我认为这应属于版权法中的“合理使用”范畴(原始网站不会因重复使用从元数据中获取的 130x90 缩略图而受损,尽管我不是法律专家)。

如果不行,我曾尝试编写一个组件来捕获图片的错误事件,然后添加一个类将其或其包装器设置为 display:none。但我尚未成功,因为我在 decorateCookedElement() 中陷入了困境……我不确定自己是否找对了地方。

那么,是否只有我频繁遇到 onebox 中图片损坏的问题?其他人有解决方法吗?

我们不是已经这样做了吗?再检查一下你的帖子!

显然不是在渲染时进行,因为你不希望将网络请求放在这条关键路径上。但我们会将其加入队列,并在后台下载单盒图片。

如果启用了“将远程图片下载到本地”(默认值为 true),我们会等待“编辑宽限期”(默认为 300 秒)后再进行下载。

4 个赞

太棒了!

我之前在查看“单个帖子设置”,所以没注意到“将远程图片下载到本地”这一选项,它之前是禁用的。

我已经启用该选项,并重新生成了部分帖子的 HTML。希望这能整理好一些问题。

感谢你的提示 :heart:

2 个赞

谢谢!我刚才还在另一个话题里问到了这件事。

1 个赞

在更改默认设置时,务必谨慎并仔细考虑其后果。我们出厂预设了最优选项,偏离这些设置可能会带来意想不到的后果。

1 个赞

说得有道理。我通常都使用默认设置,但在这个情况下,该设置似乎是由前任管理员修改的——我不确定具体原因。

希望这个设置现在也能让 Instagram 单盒中的图片保持持久显示。

再次感谢,向 Discourse 致以满满的爱 :heart:

2 个赞

是的,现在 onebox 在无法 onebox 时提供了更好的反馈,它会尽力解释原因。

1 个赞