0002-00000210

问题描述

请求头Authorization中签名信息AdditionalHeaders字段存在空的请求头。

问题原因

您发起的请求采用V4版本签名,但是请求中提供的AuthorizationAdditionalHeaders字段存在空的请求头。

问题示例

您发起了基于V4版本签名的请求,但是请求头AuthorizationAdditionalHeaders字段的值为host;,表示存在两个额外请求头,第一个请求头为host,第二个请求头为空字符串,而OSS不允许存在空字符串。

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=AK**ID/20221220/us-east-1/oss/aliyun_v4_request,AdditionalHeaders=host;,Signature=18**0a
x-oss-content-sha256: UNSIGNED-PAYLOAD

解决方案

  • AdditionalHeaders为可选字段,如果不需要将额外的请求头加入签名的计算过程,可直接删除该字段。

  • 如果确认需要将额外的请求头加入签名的计算过程,需要加入AdditionalHeaders字段,并确保该字段取值正确。该字段构建方法说明如下:

    • 额外头部中的所有header均要求小写。

    • 按照字典序升序排列额外头部中的所有header。

    • 以分号连接数组中的元素,获取字符串。

    例如,您需要将以上示例中的Host以及Range这两个Header加入签名的计算过程,结合以上构建方法说明,则AdditionalHeaders字段取值需填写为host;range

    确保V4版本签名请求中的Authorization字段格式符合以上要求,示例如下:

    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=AK**ID/20221220/us-east-1/oss/aliyun_v4_request,AdditionalHeaders=host;range,Signature=18**0a
    x-oss-content-sha256: UNSIGNED-PAYLOAD

    相关文档

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

    • 自己实现签名。

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