Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon s3 向AWS S3发送可选参数时出现SignatureDesNotMatch错误_Amazon S3 - Fatal编程技术网

Amazon s3 向AWS S3发送可选参数时出现SignatureDesNotMatch错误

Amazon s3 向AWS S3发送可选参数时出现SignatureDesNotMatch错误,amazon-s3,Amazon S3,我正在尝试使用带有签名v4的操作来获取bucket对象版本。如果我没有像下面的示例请求中提到的那样添加任何请求参数,我就能够成功地获得响应 GET/signv4testq23a1/?版本 授权:AWS4-HMAC-SHA256凭证=AKXXXXXXXXXEA/20171220/us-east-2/s3/AWS4_请求,SignedHeaders=内容类型;主办x-amz-content-sha256;x-amz-date,签名=FE3D26C4SDASD7FA15324XXXXX563DSF1

我正在尝试使用带有签名v4的操作来获取bucket对象版本。如果我没有像下面的示例请求中提到的那样添加任何请求参数,我就能够成功地获得响应

GET/signv4testq23a1/?版本
授权:AWS4-HMAC-SHA256凭证=AKXXXXXXXXXEA/20171220/us-east-2/s3/AWS4_请求,SignedHeaders=内容类型;主办x-amz-content-sha256;x-amz-date,签名=FE3D26C4SDASD7FA15324XXXXX563DSF148DF58D131B4CEDE6
x-amz-content-sha256:未签名的有效负载
x-amz-日期:2017年12月20日星期三07:22:14 GMT
内容类型:application/xml
主持人:s3.us-east-2.amazonaws.com
这是一个问题:

delimiter=%2F&versions=
键和值应为url转义(编码),但参数之间的
&
不应转义为
&。。。它应该是
&
。您需要单独对每个键和值进行编码,而不是对排序和组装后的整个字符串进行编码

CanonicalQueryString

指定URI编码的查询字符串参数。您可以分别对名称和值进行URI编码


如果我使用&而不转义它,我将从后端服务获得不同的规范请求。生成的规范请求:GET/1513162931643testconbkt2/分隔符=%2F&max key=3&versions=content-type:application/xml主机:s3-us-west-2.amazonaws.com x-amz-content-sha256:UNSIGNED-PAYLOAD x-amz-date:Wed,Dec 2017 13:40:03 GMT content-type;主办x-amz-content-sha256;x-amz-date未签名的PAYLOADExpected规范化请求来自后端(在错误消息中返回):GET/1513162931643testconbkt2/分隔符=%2F&;versions=内容类型:application/xml主机:s3-us-west-2.amazonaws.com x-amz-content-sha256:UNSIGNED-PAYLOAD x-amz-date:Wed,2017年12月20日13:40:03 GMT内容类型;主办x-amz-content-sha256;x-amz-date UNSIGNED payloads从第一条注释开始,后端返回的规范化请求与您的代码计算的有什么不同?添加文字输出或代码时,请使用“编辑”按钮,并在问题内部提供其他内容,而不是注释——在注释中阅读很困难。感谢Michael提供的信息。如果我使用&而不逃逸,它工作得很好。问题是在我之前的评论中,请求中缺少一个请求参数。