问题描述
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请求。
该文章对您有帮助吗?