我正在爲salesforce開發代碼。我們正在使用來自Appexchange的'Force.com for Amazon Web Services'應用程序。該應用程序由亞馬遜提供。Amazon S3:奇怪的錯誤 - '有時'SignatureDoesNotMatch,有時它確實
我正在從機器上的Amazon S3下載文件。
有時我得到下面提到的錯誤。有趣的是,只有有時候我會得到這個錯誤,其餘的時間,甚至是同一個文件。
<Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>
我嘗試使用由亞馬遜提供的兩種URL模式。鏈接生成後,過期時間設置爲1小時,因此可能不成問題。
URL1:- http://adminportal.s3.amazonaws.com/sample.pdf?AWSAccessKeyId=AKIAIRUZSRRCVSLXZCIA&Expires=1372653478&Signature=RvMJ1gJL+qNKmnRkqzuytmlUTGQ=
URL2:- http://s3.amazonaws.com/adminportal/sample.pdf?AWSAccessKeyId=AKIAIRUZSRRCVSLXZCIA&Expires=1372658253&Signature=%2FmI0m0PTlHJpJ%2FP5d%2FX3OApqzcI%3D
該簽名是由亞馬遜提供的類生成的,我猜它必須在所有時間都運行良好。
有人可以詳細說明爲什麼S3有時只會給出這個錯誤嗎?
你救了我的一天! – Raeesaa
你的意思是'+'會被一些特殊的字符所取代。我有這樣的代碼: 'var signature = crypto.createHmac('sha1',AWS_SECRET_KEY).update(put_request).digest('base64');' 'signature = encodeURIComponent(signature.trim());' ' 'signature'= signature.replace('%2B','+');' 最後一行應該是'signature = signature.replace('+','%2B');'還是應該刪除? – vinit
我在問你,因爲它很難重新創建測試用例,所以想從你那裏確認。 – vinit