问题描述
签名所用的额外请求头参数列表中包含了请求中不存在的请求头。
问题原因
您发起的请求采用V2版本签名,但是请求头Authorization
中AdditionalHeaders
字段出现请求头中不包含的头部字段,或者某个请求头包含下划线_
。
问题示例
您发起了基于V2版本签名的请求,但是请求头Authorization
中的AdditionalHeaders
有误:
*GET /oss.jpg HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Tue, 20 Dec 2022 08:48:18 GMT
Authorization: OSS2 AccessKeyId:LTAI********,AdditionalHeaders:host;range,Signature:n7****
其中,Authorization
字段的AdditionalHeaders
部分为请求头列表,以分号分隔。列表中的每一项都必须在请求头中出现。以上示例中AdditionalHeaders
取值为host;range
,但是取值中的第二项range
在请求头中不存在。
解决方案
确保
AdditionalHeaders
字段不存在包含下划线_
的请求头。删除
AdditionalHeaders
字段取值中的range。GET /oss.jpg HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Tue, 20 Dec 2022 08:48:18 GMT Authorization: OSS2 AccessKeyId:LTAI********,AdditionalHeaders:host,Signature:n7I****
保留
AdditionalHeaders
字段的取值为host;range
,则需要在请求中加入Range请求头。GET /oss.jpg HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Tue, 20 Dec 2022 08:48:18 GMT Range: 0-2560 Authorization: OSS2 AccessKeyId:LTAI********,AdditionalHeaders:host,Signature:n7I****
相关文档
使用SDK发起请求实现V2版本签名。更多信息,请参见使用阿里云SDK发起请求概述。
自己实现签名。
如果您需要自己实现V2版本签名,可参考SDK V2版本签名。更多信息,请参见Python SDK V2版本签名实现。
如果您需要自己实现签名逻辑,可参考V1版本签名。更多信息,请参见使用REST API发起请求。
采用以上方法自己实现签名过程中,如果服务端在响应中返回了
StringToSign
字符串,可以查看服务端的待签字符串与您签名前的待签字符串是否一致。
文档内容是否对您有帮助?