文档

0002-00000211

更新时间:

问题描述

签名所用的额外请求头参数列表中包含了请求中不存在的请求头。

问题原因

您发起的请求采用V4版本签名,但是请求头Authorization中AdditionalHeaders字段出现请求头中不包含的头部字段,或者某个请求头包含下划线(_)。

问题示例

您发起了基于V4版本签名的请求,但是请求头AuthorizationAdditionalHeaders签名信息有误:

GET /oss.jpg HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Tue, 20 Dec 2022 08:48:18 GMT
Authorization: OSS4-HMAC-SHA256 Credential=LTAI********/20221220/us-east-1/oss/aliyun_v4_request,AdditionalHeaders=host;range,Signature=n7****
x-oss-content-sha256: UNSIGNED-PAYLOAD

签名信息AdditionalHeaders字段的取值为host;range,表示请求中存在两个额外请求头。第一个是host,第二个是range,但是发起的签名请求中并不存在Range请求头。

解决方案

  • 确保AdditionalHeaders字段不存在包含下划线_的请求头。

  • 删除AdditionalHeaders字段取值中的range。

    n7****GET /oss.jpg HTTP/1.1
    Host: oss-example.oss-cn-hangzhou.aliyuncs.com
    Date: Tue, 20 Dec 2022 08:48:18 GMT
    Authorization: OSS4-HMAC-SHA256 Credential=LTAI********/20221220/us-east-1/oss/aliyun_v4_request,AdditionalHeaders=host,Signature=n7****
    x-oss-content-sha256: UNSIGNED-PAYLOAD
  • 保留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: OSS4-HMAC-SHA256 Credential=LTAI********/20221220/us-east-1/oss/aliyun_v4_request,AdditionalHeaders=host;range,Signature=n7****

相关文档

  • 使用SDK发起请求实现V4版本签名。更多信息,请参见使用阿里云SDK发起请求概述

  • 自己实现签名。

    采用以上方法自己实现签名过程中,如果服务端在响应中返回了StringToSign字符串,可以查看服务端的待签字符串与您签名前的待签字符串是否一致。