0002-00000111

问题描述

请求头AuthorizationAdditionalHeaders字段中包含空项。

问题原因

您发起的请求采用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:44**07,AdditionalHeaders:host;,Signature:n7***I0=

Authorization字段以空格的方式分隔签名版本和签名信息。

  • 签名版本:仅支持填写OSS2

  • 签名信息:以键值对(key:value)的形式呈现。键值对之间用逗号分隔,键与值之间用冒号分隔。

    其中,签名信息支持的key包括两个必选字段(AccessKeyIdSignature)以及一个可选字段(AdditionalHeaders)。以上示例中AdditionalHeaders取值为host;,表示第一项为host,第二项为空,而OSS不支持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:44**07,AdditionalHeaders:host,Signature:n7I**I0=

相关文档

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

  • 自己实现签名。

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