【问题标题】:Google Cloud Storage URL expires after a dayGoogle Cloud Storage 网址在一天后过期
【发布时间】:2020-04-17 04:08:20
【问题描述】:

我最近为我的 django 应用程序切换到谷歌云,一切正常,除了我来自谷歌云存储的一些图片的网址在一天后不断过期,这真的很糟糕,因为总是有损坏的图像我的应用程序。我什至将我的存储桶设置为公开,但网址仍然会在一天后过期。当我尝试访问图像时收到此消息。

    <Error>
        <Code>ExpiredToken</Code>
        <Message>The provided token has expired.</Message>
        <Details>
        Request signature expired at: 2020-04-16T17:28:36+00:00
        </Details>
    </Error>

如何改变这一点?

【问题讨论】:

  • 请编辑问题以说明您如何获取这些 URL,可能指向您正在使用的文档。有不同类型的 URL 可以链接到 Cloud Storage 中的内容。

标签: django google-cloud-storage


【解决方案1】:

据我了解,您正在向前端提供签名 URL,并且此 URL 即将过期。 正如您在Public Documentation中看到的那样

解决此用例的典型方法是向 一个用户,它赋予用户对该用户的读、写或删除权限 资源有限的时间。当您指定到期时间时 创建签名 URL

这意味着使用签名 URL 可能不是您应用的最佳方法。仅当您的用户每次登录到您的应用程序时,您都会为该特定用户生成一个新的签名 URL(这对于您的用例而言可能过于复杂),这才有用

如果您要公开您的对象,您可能会尝试使用 URL 链接。此 URL 具有以下形式:

https://storage.cloud.google.com/YOUR_BUCKET/YOUR_IMAGE.PNG

传递此 URL 而不是签名 URL 将停止“使您的 URL 在一天后过期”。

【讨论】:

  • 是的,谢谢。我已经发现只使用公共 url 就可以消除这个错误。但是,我的应用程序允许其他用户直接从他们的终端发帖。我在想动态地从给定的签名 url 中拆分公共签名的 url 可以解决问题,但我不知道这是否会有不利之处。从技术上讲,我会使用 javascript 来实现这一点。
  • 无论您想公开分享什么,而且您不介意任何人都可以访问,只需使用公共 URL 链接即可。仅将签名 URL 用于您希望在有限时间内仅对特定用户/组可访问的信息。我不知道您的应用程序遵循上传/授予权限的流程。如果您需要这方面的建议,请扩展您的问题,详细介绍您的应用工作流程和所需结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-12-24
  • 1970-01-01
  • 1970-01-01
  • 2014-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多