文档

0002-00000703

更新时间:

问题描述

POST请求表单中缺少签名。

问题原因

您发起了带有签名信息的POST请求,但是请求表单中缺少签名表单域。具体表现如下:

  • 对于默认的V1版签名和Amazon S3 V2兼容版本签名,需要通过Signature表单域提供签名信息。

  • 对于V2和V4版本签名,需要通过x-oss-signature表单域提供签名信息。

  • 对于Amazon S3 V4兼容版本签名,需要通过x-amz-signature表单域提供签名信息。

问题示例

您发起了默认的V1版本的POST请求,且表单域中包含签名认证相关的表单域,但是请求中缺少Signature表单域。

解决方案

根据所用的签名版本,在相应的表单域Signaturex-oss-signaturex-amz-signature中提供计算的签名值。

在表单域中加入计算签名的流程如下:

  1. 创建一个UTF-8编码的Policy。

  2. 将Policy进行base64编码,其值即为Policy表单域填入的值,将该值作为将要签名的字符串。

  3. 使用AccessKeySecret对待签名的字符串进行签名。

    Signature = base64(hmac-sha1(AccessKeySecret, base64(policy)))
  4. 在表单域Signature中指定计算出的签名,示例如下。

    Content-Disposition: form-data; name="Signature"
    {signature}
    --9431149156168

关于PostObject请求的更多信息,请参见PostObject

相关文档

您还可以参考以下示例发起带有签名信息的POST请求。

  • 本页导读 (1)
文档反馈