2016-09-21 77 views
0

我正在尝试使用pre-signed post from heroku从我的iOS应用直接上传到S3。 Heroku的下面返回到我的快捷应用程序:heroku S3预先签署的帖子和S3请求签名

{'url': u'https://bucketname.s3.amazonaws.com/filename', 'data': {'url': u'https://bucketname.s3.amazonaws.com/', 'fields': {'Content-Type': 'm4a', 'key': u'filename', 'AWSAccessKeyId': u'XXXXXXXXXXXX', 'acl': 'public-read', 'policy': u'wtLepKMeghI3rt1UeikLoQcNTYtMDktMTBUMTc6NDE6MTJaIiwgImNvbmRpdGlvbnMiOiBbeyJhY2wiOiAicHVibGljLXJlYWQifSwgeyJDb250ZW50LVR5cGUiOiAibTRhIn0sIHsiYnVja2V0IjogImZ1eZEaJKYzeDgZwz3lOPtys5B0MigIwImv2OpQm3ylP==', 'signature': u'qr647bMEA9M8LeBVqkJLcvEIO4g='}}}

正如你可以看到,有一个签名是:qr647bMEA9M8LeBVqkJLcvEIO4g=

和政策

wtLepKMeghI3rt1UeikLoQcNTYtMDktMTBUMTc6NDE6MTJaIiwgImNvbmRpdGlvbnMiOiBbeyJhY2wiOiAicHVibGljLXJlYWQifSwgeyJDb250ZW50LVR5cGUiOiAibTRhIn0sIHsiYnVja2V0IjogImZ1eZEaJKYzeDgZwz3lOPtys5B0MigIwImv2OpQm3ylP==

在AWS documentation,它们使用的签名示例(下面)比Heroku返回的签名具有更多字符

Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7

是由比亚马逊要求签署一份要求不同的Heroku提供的签名?我是否会使用Heroku返回的签名?

回答

1

5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7是十六进制和qr647bMEA9M8LeBVqkJLcvEIO4g=是在base64编码并且比六角短得多,因为base64使用64个字符用于编码而hex使用16个字符。

AWS期望以base64编码进行签名。所以Heroku返回给你的是正确的。你有什么问题?

+0

我想第一次向S3做一个签名的请求,我无法建立连接,所以我决定查看文档,看看我是否做错了什么。我目前正在得到一个HTTP错误代码400.不知道我是否以正确的格式提供了所需的值。 – Brosef

+0

400可以表示任何东西。答案应该有更多的信息,说明它为什么要返回400。 – helloV