【问题标题】:Can't upload to Amazon S3 with signed request via XMLHttpRequest无法通过 XMLHttpRequest 使用签名请求上传到 Amazon S3
【发布时间】:2016-02-26 22:52:59
【问题描述】:

我所做的一切都是Heroku recommended,但我不断收到SignatureDoesNotMatch 错误。带留言:

The request signature we calculated does not
match the signature you provided. Check your key
and signing method.

但我不是有意签任何东西的。我只想要一个可以直接下载文件的链接。

这是我在 Node JS 服务器上的 aws 配置。我使用它们来生成签名请求。他们为我提供了一个长链接。

var s3_params = {
  Bucket: S3_BUCKET,
  Key: filename,
  Expires: 400,
  ContentType: fileType,
  ACL: 'public-read'
}

我是否认为我不需要 AWS 密钥来上传带有签名请求的文件?

【问题讨论】:

  • 什么时候出现这个错误?当用户尝试上传或您尝试在服务器上预签名 URL 时?
  • 当我尝试上传时。预签成功。我可以将预先签名的网址通过电子邮件发送给任何愿意调查的人。
  • 把它发送到harsha (a)harvarardhana.net 一定很简单。

标签: javascript heroku amazon-s3


【解决方案1】:

或者你可以看看我为简单起见编写的mc工具,你可以从https://github.com/minio/mc下载适用于 OS X、Linux 和 Windows 的二进制文件

$ mc share download --expiry=400s <YOUR-S3-URL>

mc 还实现了“--json”输出,因此您可以轻松构建服务器端 nodejs 服务。没有 --expiry URL 与默认 7 天的到期共享。

$ mc share download --json s3.amazonaws.com/ferenginar/distrikt_2014-01-31T07_31_11-08_00.mp3 | jq . 

{
  "status": "success",
  "url": "https://s3.amazonaws.com/ferenginar/distrikt_2014-01-31T07_31_11-08_00.mp3",
  "share": "https://s3.amazonaws.com/ferenginar/distrikt_2014-01-31T07_31_11-08_00.mp3?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAI6SNMUFOVIEFOZJA%2F20151125%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20151125T002135Z&X-Amz-Expires=604800&X-Amz-SignedHeaders=host&X-Amz-Signature=082e01d815e6aee8bc567d1d86d79d635b5313337dfba46524f35cfc6858e857",
  "timeLeft": 604800000000000
}

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    问题在于凭据错误。我只是忘记了,我从 AWS 中删除了我的密钥。我重新创建了它,现在一切正常。

    【讨论】:

      猜你喜欢
      • 2021-09-29
      • 2017-11-21
      • 2012-05-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-31
      • 1970-01-01
      • 2015-10-13
      相关资源
      最近更新 更多