Javascript 在s3.getSignedUrl()参数中编码空格
当密钥名中有空格时,我从AWS收到一个“SignatureDesNotMatch”403错误,该错误来自S3中项目的预签名URL。当然,键名中的空格是个坏主意 请求getSignedUrl时,我尝试用加号替换空格,尝试用%20替换空格,尝试了各种编码方案,但都没有用Javascript 在s3.getSignedUrl()参数中编码空格,javascript,amazon-web-services,amazon-s3,aws-sdk,Javascript,Amazon Web Services,Amazon S3,Aws Sdk,当密钥名中有空格时,我从AWS收到一个“SignatureDesNotMatch”403错误,该错误来自S3中项目的预签名URL。当然,键名中的空格是个坏主意 请求getSignedUrl时,我尝试用加号替换空格,尝试用%20替换空格,尝试了各种编码方案,但都没有用 key = "SOMEBUCKET/my file with a space.jpg"; key = key.replace(/ /g,"%20"); params.Key = key s3Client.getSignedUrl('
key = "SOMEBUCKET/my file with a space.jpg";
key = key.replace(/ /g,"%20");
params.Key = key
s3Client.getSignedUrl('getObject', params, function(err, url) { }
我得到的是一个错误文档:
<Code>SignatureDoesNotMatch</Code>
<Message>
The request signature we calculated does not match the signature you
provided. Check your key and signing method.
</Message>...
如何对其进行编码,以便可以使用S3.getSignedUrl()和键中的空格?谢谢你的帮助 S3做了一些与键中的空格相关的奇怪事情,但是SDK应该能够正确处理它。您是否可以在根本不转义的情况下传递密钥,并向我们显示来自S3的完整错误消息?如果我在params.key对象中传递未编码的密钥,则密钥中的空格将自动被URLCoded到%20。各种编码都会出现错误消息。示例:获取1495488453/petedmpreview/breaked filez/image++with+a+space.jpgSo,无论我使用%20、a加号还是%2b作为url编码的加号,s3.getSignedUrl方法都不会返回工作url。找到解决方案了吗@彼得:你找到解决办法了吗@彼得弗里德曼