AWS S3将参数添加到签名的URL

问题描述

我使用django-storages将静态文件和私有文件存储在s3存储桶中。

对于一些文件,我需要在url中传递参数,因为所请求的html文件会使用这些参数生成动态内容。

例如:

https://example-static-bucket.s3.amazonaws.com/static/header.html?name=Example&site=2

使用静态文件,效果很好。

但是,如果我使用django-storages获取私有文件的签名URL并添加参数,则会出现错误:

<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>
...
</Error>

如何使用django-storages将参数添加到已签名的url中?

解决方法

S3存储静态对象,您不能使用签名的URL对其进行修改。可以将S3对象视为文件系统中的文件:它们具有路径和名称,您可以获取其内容,但是它们是用于数据的哑容器。

类似地,您不能让static / header.html基于调用的参数而变得不同。您可以上传文件,也可以下载文件。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...