2015-11-24 171 views
0

我做了所有的事情都是Heroku recommended,但我一直收到SignatureDoesNotMatch錯誤。有消息:無法通過XMLHttpRequest通過簽名請求上傳到Amazon S3

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

但我沒有意思簽署任何東西。我只想要一個可以直接下載文件的鏈接。

這是我在節點JS服務器的aws配置。我用它們來生成一個簽名的請求。他們爲我提供了一個長長的鏈接。

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

我是否認爲我不需要使用AWS密鑰上傳帶簽名請求的文件?

+0

當你遇到這個錯誤?當用戶嘗試上傳或嘗試預先在服務器上對URL進行簽名時? – awendt

+1

當我嘗試上傳。它預先簽署成功。我可以通過電子郵件將預先簽名的網址發送給任何願意調查的人。 –

+0

發送到harsha(a)harshavardhana.net一定是簡單的東西。 – Harshavardhana

回答

1

或者,你可以看看mc工具,我寫的簡單,你可以從https://github.com/minio/mc

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

mc下載OS X,Linux和Windows二進制文件還實現了「--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 
} 

希望這有助於!

0

問題出在錯誤憑證上。我忘了,我從AWS刪除了我的密鑰。我重新創建了它,現在一切正常。