是的,我们有这个 GlobalSetting,您可以通过设置环境变量 DISCOURSE_REDIRECT_AVATAR_REQUESTS=true 来启用它。
然后,头像请求将通过 302 重定向到文件存储,而不是代理。
它本身……并不是一个好主意。这意味着浏览器每次获取头像都需要进行两次完整的 HTTP 往返。所以,虽然它可能解决了您的“防盗链”问题……但我不会建议您启用它。它会让您的用户体验变得更糟。
我们在 discourse.org 托管上使用了该设置。但我们通过运行在 Cloudfront CDN 上的 Lambda 函数对其进行了补充。它会检测到 302 并自行执行代理。本质上:我们将代理从我们的应用程序服务器转移到了 CDN。
至于“能否更改头像以直接链接到资源”这个更普遍的问题。这很棘手,因为头像 URL 会被烘焙到所有历史帖子中(例如,引用)。动态的 /user-avatar/ URL 使我们能够在用户更改头像时保持这些 URL 的工作。恐怕我们没有计划更改该系统。
如果我们能找到一种简单、低风险的方法来使现有的代理适用于您的用例(例如,添加一个 GlobalSetting,在任何头像代理请求中插入特定的 HTTP 标头),那么我们可以考虑接受一个 PR 来进行更改。