

# 对请求进行身份验证：使用 POST 的基于浏览器的上传（Amazon 签名版本 4）
<a name="sigv4-authentication-HTTPPOST"></a>

Amazon S3 支持 HTTP POST 请求，以便用户可以直接将内容上传到 Amazon S3。使用 HTTP POST 上传内容可简化上传并减少上传延迟，适用于用户将数据上传至 Amazon S3 中进行存储的情况。本节说明如何对 HTTP POST 请求进行身份验证。有关 HTTP POST 请求、如何创建表单、创建 POST 策略以及示例的更多信息，请参阅[使用 POST 的基于浏览器的上传（Amazon 签名版本 4）](sigv4-UsingHTTPPOST.md)。

要对 HTTP POST 请求进行身份验证，请执行以下操作：

 

1. 表单必须包含以下字段，以提供签名和相关信息，供 Amazon S3 用于在收到请求时重新计算签名：    
[See the AWS documentation website for more details](http://docs.amazonaws.cn/AmazonS3/latest/developerguide/sigv4-authentication-HTTPPOST.html)

1. POST 策略必须包含以下元素：    
[See the AWS documentation website for more details](http://docs.amazonaws.cn/AmazonS3/latest/developerguide/sigv4-authentication-HTTPPOST.html)

1. 对于签名计算，POST 策略是待签字符串。

## 计算签名
<a name="sigv4-signature-calc-post"></a>

 下图说明了签名计算过程。

![Amazon 签名计算过程，包含 StringToSign、SigningKey 和 Signature 步骤。](http://docs.amazonaws.cn/AmazonS3/latest/developerguide/images/sigV4-post.png)






**计算签名**

1. 使用 UTF-8 编码创建策略。

1. 将 UTF-8 编码的策略转换为 Base64。结果是待签字符串。

1. 将签名创建为待签字符串的 HMAC-SHA256 哈希值。您将提供签名密钥作为哈希函数的密钥。

1. 使用十六进制编码对签名进行编码。

有关创建 HTML 表单、安全策略和示例的更多信息，请参阅以下子主题：


+ [创建 HTML 表单（使用 Amazon 签名版本 4）](sigv4-HTTPPOSTForms.md)
+ [POST 策略](sigv4-HTTPPOSTConstructPolicy.md)
+ [示例：使用 HTTP POST 的基于浏览器的上传（使用 Amazon 签名版本 4）](sigv4-post-example.md)