0

在我的 Java 后端,每次我的前端加载/重新加载时,我都会生成一个新的签名 URL。出于测试目的,我对到期日期进行了硬编码。过期日期/时间已过,并且 URL 按预期过期,但我的前端应用程序仍然能够使用我传递给它的 URL 显示对象。

这是在每次刷新时执行的后端代码:

            String signedUrl = CloudFrontUrlSigner.getSignedURLWithCannedPolicy(SignerUtils.Protocol.https,
                distributionDomain, new File(privateKeyFilePath), s3ObjectKey, "my-keypair-id",
                DateUtils.parseISO8601Date("2021-02-10T14:41:00.000Z"));

在我的前端,我只需将 signedUrl 添加到 Image 标签:

        <Image style={styles.img} source={{ uri: img }} />

如果我转到浏览器并手动粘贴我的signedUrl,我可以看到它说访问被拒绝,因为过期。

4

1 回答 1

0

我想我会尝试其他一些事情来查看行为。我将存储桶策略更改为完全私有,并尝试仅从 S3 URL 和浏览器中提取图像,它按预期被阻止,但是从我的应用程序中这是有效的。然后,我尝试了相同的方法,除了 Android Play 商店中我的应用程序的测试版。在这里,图像的行为符合预期。当我阻止公共访问时,它们会消失,反之亦然。

我最终从手机上卸载了我的应用程序的本地版本,重新安装它,现在它可以按预期工作,由于过期日期过去,img 没有出现。不知道那里发生了什么。

于 2021-02-10T16:50:20.627 回答