如何在节点js的预签名url请求中发送内容md5标头

时间:2020-08-13 18:18:14

标签: node.js amazon-s3 md5 pre-signed-url

我想检查上传到S3的对象的完整性。因此,我想包含md5标头,这样无论何时有人使用该URL,他们都应该仅上传有效内容。 仅供参考:我将从用户界面中获取md5内容到我的服务。

const params = {
    Bucket: bucket,
      Key: id,
      Expires: 300,
      Metadata: metadata,
    };

this.s3ClientAccelerate.getSignedUrl('putObject', params);

2 个答案:

答案 0 :(得分:0)

只需添加这样的ContentMD5。

const params = { Bucket: bucket, Key: id, Expires: 300, Metadata: metadata,ContentMD5: md5, };

并确保在客户端的标头中传递Content-MD5。

答案 1 :(得分:0)

正如我们从其名称可以理解的那样,

signedUrl使用其必需的标头和用户的自定义标头对URL进行签名。如果您希望通过签名的URL验证请求,则只需在创建signedUrl时附加相关的哈希即可,如果请求的签名与之前的signedUrl的签名不匹配。创建后,它将显示一个SignatureDoesNotMatch错误。

const params = {
    Bucket: bucket,
      Key: id,
      Expires: 300,
      Metadata: metadata,
      MD5: uiMD5
    };

this.s3ClientAccelerate.getSignedUrl('putObject', params);