问题描述
签名所用的额外请求头参数列表中包含了请求中不存在的请求头。
问题原因
您发起了Amazon S3兼容的V4版本请求,但是请求签名的额外请求头X-Amz-SignedHeaders
参数或Authorization
请求头的SignedHeaders
字段列表中存在请求中不存在的请求头,或其中某个请求头包含下划线_
。
问题示例
您发起了在URL请求参数中携带签名的请求,但是X-Amz-SignedHeaders
参数中包含请求头列表有误。
GET /test.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=LTAI********/20221220/us-east-1/s3/aws4_request&X-Amz-Date=20221220T084818Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host;range&X-Amz-Signature=ab2***st HTTP/1.0
Date: Tue, 20 Dec 2022 08:48:18 GMT
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
x-oss-s3-compat: true
X-Amz-SignedHeaders
参数的取值为host;range
,表示请求中存在两个额外请求头。第一个是host,第二个是range,但是发起的签名请求中并不存在Range请求头。
解决方案
确保
X-Amz-SignedHeaders
参数或Authorization
请求头的SignedHeaders
字段列表中不存在包含下划线_
的请求头。删除
X-Amz-SignedHeaders
参数取值中的range。GET /test.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=LTAI********/20221220/us-east-1/s3/aws4_request&X-Amz-Date=20221220T084818Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host&X-Amz-Signature=ab2***st HTTP/1.0 Date: Tue, 20 Dec 2022 08:48:18 GMT Host: oss-example.oss-cn-hangzhou.aliyuncs.com
保留
X-Amz-SignedHeaders
字段的取值为host;range
,则需要在请求中加入Range请求头。GET /test.txt?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=LTAI********/20221220/us-east-1/s3/aws4_request&X-Amz-Date=20221220T084818Z&X-Amz-Expires=86400&X-Amz-SignedHeaders=host;range&X-Amz-Signature=ab2***st HTTP/1.0 Date: Tue, 20 Dec 2022 08:48:18 GMT Host: oss-example.oss-cn-hangzhou.aliyuncs.com Range: 0-2560
推荐使用Amazon S3 SDK发起请求。更多信息,请参见使用Amazon S3 SDK访问OSS。
文档内容是否对您有帮助?