Я разрабатываю код для salesforce. Мы используем приложение «Force.com для Amazon Web Services» от Appexchange. Приложение предоставлено Amazon.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, предоставленные Amazon. Срок действия истекает в течение 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
Подпись вырабатывается классом, предоставляемым Amazon, я думаю, он должен хорошо работать все время.
Может кто-нибудь уточнить, почему 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