问题描述
POST请求表单中缺少签名。
问题原因
您发起了带有签名信息的POST请求,但是请求表单中缺少签名表单域。具体表现如下:
对于默认的V1版签名和Amazon S3 V2兼容版本签名,需要通过
Signature
表单域提供签名信息。对于V2和V4版本签名,需要通过
x-oss-signature
表单域提供签名信息。对于Amazon S3 V4兼容版本签名,需要通过
x-amz-signature
表单域提供签名信息。
问题示例
您发起了默认的V1版本的POST请求,且表单域中包含签名认证相关的表单域,但是请求中缺少Signature
表单域。
解决方案
根据所用的签名版本,在相应的表单域Signature
,x-oss-signature
或x-amz-signature
中提供计算的签名值。
在表单域中加入计算签名的流程如下:
创建一个
UTF-8
编码的Policy。将Policy进行
base64
编码,其值即为Policy表单域填入的值,将该值作为将要签名的字符串。使用
AccessKeySecret
对待签名的字符串进行签名。Signature = base64(hmac-sha1(AccessKeySecret, base64(policy)))
在表单域
Signature
中指定计算出的签名,示例如下。Content-Disposition: form-data; name="Signature" {signature} --9431149156168
关于PostObject请求的更多信息,请参见PostObject。
相关文档
您还可以参考以下示例发起带有签名信息的POST请求。
文档内容是否对您有帮助?