【问题标题】:How to serve protected images from static server (CDN)如何从静态服务器 (CDN) 提供受保护的图像
【发布时间】:2019-10-19 10:35:41
【问题描述】:

我需要向登录用户提供静态内容(主要是图片),但这些图片不能公开。

客户端有基本的 JWT 授权。这些客户端有图像,但这些图像必须是私有的(只有拥有它们的用户才能访问它们)。

我的图像由我的第二个 Node.js 服务器提供,其工作方式类似于 CDN(缓存、无标头等...)

我正在考虑通过这样的 URL 发送我的 JWT:http://static.example.com/image.jpg?token=jwtjwtjwtkwtjwt,但我的 JWT 很长而且不安全,因为如果用户将 URL 共享到图像,他也会共享他的 JWT。

【问题讨论】:

    标签: node.js image static cdn serving


    【解决方案1】:

    允许标头并在标头中发送令牌...

    或在用户通过身份验证时为您的图像创建动态 URL,并具有一定的 URL 生命周期(1 小时等)。示例:http://static.example.com/njafhiwe4ihyubwfejw 而不是 http://static.example.com/image.jpg

    【讨论】:

    • 例如,我无法在 标记中发送标题,所以这不是一个选项。当我创建短暂的生命周期网址时,我需要以某种方式刷新它们并可以选择丢弃它们等等......我看到例如谷歌照片有这些网址,但每张图片都有 1 个:D 没有短暂的生命周期值得旋转
    【解决方案2】:

    您可以在加载图像时在请求标头中传递您的令牌。

    如果上述方法对您不起作用,那么您可以创建一个 api,获取您的令牌和目标文件,并返回一个生命周期较短的 url 以访问该文件。

    【讨论】:

    • 与@Volodymyr Sichka 的答案相同
    最近更新 更多