node.js - 如何使用 AWS S3 签名 url 从 Postman 上传文件?

标签 node.js amazon-web-services amazon-s3 postman pre-signed-url

我想实现以下目标 -
1. 生成签名 URL
2. 使用 Postman 上传文件 (image.jpg) 到 URL

我正在使用 AWS Node SDK 创建 URL,
以下是代码 -

const AWS = require('aws-sdk');

AWS.config.update({
    region: 'us-east-1'
});

const s3 = new AWS.S3();

var presignedPUTURL = s3.getSignedUrl('putObject', {
    Bucket: 'some-bucket',
    Key: 'test/image.jpg',
    Expires: 3600
});

console.log(presignedPUTURL);

该代码创建了一个 URL,如 -
https://some-bucket.s3.amazonaws.com/test/image.jpg?AWSAccessKeyId=ABCDxxx&Expires=1572339646&Signature=someSignaturexxx

这是 postman 的回复 -
<Code>SignatureDoesNotMatch</Code>
    <Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message>

postman 电话 -
enter image description here
-------------------------------------------------- -----------------------------
enter image description here

我试过这个 -
https://medium.com/@aidan.hallett/securing-aws-s3-uploads-using-presigned-urls-aa821c13ae8d

我还尝试了各种组合,代码中的键和文件名的同名上传,
不同的内容类型组合,
但没有运气。

最佳答案

postman 添加 隐藏标题 .如果我删除 Content-Type标题,Put请求将按预期工作。
enter image description here

关于node.js - 如何使用 AWS S3 签名 url 从 Postman 上传文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58603995/

相关文章:

Spring Cloud 溪流kinesis Binder

java - 返回在 REST Controller 中包装 S3Object.getObjectContent() 的 ResponseEntity<InputStreamResource> 是否安全?

node.js - sequelize getter 和 setter 是如何工作的?

javascript - 如何在node.js中以非阻塞方式让连接等待?

javascript - mypromise.then 内函数的返回值

javascript - 允许对 S3 存储桶的子目录进行完全同步的文件系统读/写访问吗?

python - 如何从一个存储桶中获取图像并将其放入 S3 boto 中的另一个存储桶中

node.js - Webpack 4 "size exceeds the recommended limit (244 KiB)"

amazon-web-services - API Gateway 和 Elastic Beanstalk 之间是否需要 HTTPS?

amazon-web-services - 内存警告空间不足,无法缓存 rdd