2016-09-21 46 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

相關問題