Web services 使用预先签名的url访问文件

Web services 使用预先签名的url访问文件,web-services,amazon-web-services,amazon-s3,mule,Web Services,Amazon Web Services,Amazon S3,Mule,我在AmazonS3中将一个对象添加到一个bucket中。添加成功,现在我想让其他人通过预签名的url访问该文件 预签名url的格式为: https://.s3.amazonaws.com/?AWSAccessKeyId=&Expires=1432722343&Signature=mmfv%2Fddhhakla1csUrb%2FtRCXYu8%3D 但当我尝试加载url时,它返回一个错误: <Error> <Code>SignatureDoesNotMatch&l

我在AmazonS3中将一个对象添加到一个bucket中。添加成功,现在我想让其他人通过预签名的url访问该文件

预签名url的格式为:
https://.s3.amazonaws.com/?AWSAccessKeyId=&Expires=1432722343&Signature=mmfv%2Fddhhakla1csUrb%2FtRCXYu8%3D

但当我尝试加载url时,它返回一个错误:

    <Error>
<Code>SignatureDoesNotMatch</Code>
<Message>
         The request signature we calculated does not match the signature you provided. Check your key and signing method.
</Message>
<AWSAccessKeyId></AWSAccessKeyId>
<StringToSign>
      GET 1432727995 /<bucket>/<key>
</StringToSign>
<SignatureProvided>mmfv/ddhhakla1csUrb/tRCXYu8=</SignatureProvided>
<StringToSignBytes>
     47 45 54 0a 0a 0a 31 34 33 32 37 32 37 39 39 35 0a 2f 72 69 2d 73 65 72 76 69 63 65 2d 74 72 61 6b 2d 74 65 73 74 2f 74 65 73 74 53 75 6e 69 74 31 2e 78 6d 6c
</StringToSignBytes>
<RequestId>0E72b9858758353A0D906</RequestId>
<HostId>
    SOME VALUE
</HostId>
</Error>
另一个问题:
如果我有一个包含“+”的URI,我如何使用该URI访问页面,因为在web浏览器中尝试该URI会将其转换为空间(“”),这是不正确的

对于问题的uri“+”部分,这是正常的。查看URL是否需要表示文字
+
,它应编码为
%2B
。空格依次编码为
%20
。在签名的URL上,您没有重复使用
PUT
URL来尝试
获取对象,是吗?什么代码在进行签名?其中一个SDK?@Michael sqlbot作为预签名url生成的url,我正试图使用该uri访问该文件,它会给我一个签名不匹配的错误。您是否使用url中与访问密钥关联的密钥自己计算签名?@JohnRotenstein预签名url是自动生成的,包含“签名”参数的