AWS将文件上传到S3 REST API-该请求缺少必需的标头:x-amz-content-sha256

问题描述

不幸的是,我无法使用AWS开发工具包,而必须使用REST API AWS服务(我正在使用Flutter WEB )。 所以我开始对AWS文档进行研究,这就是我所做的:

  1. 创建存储桶。

  2. 将所有权限公开(仅用于测试)

  3. 开放式接入点

然后在我正在“ Auth” aws签名中使用的邮递员处添加新的密钥, 除了会话令牌(我的存储桶是打开的,如果我误会请纠正我,我知道我不需要它)。 当我发送请求时,出现错误

Missing required header for this request: x-amz-content-sha256

这是附件图片

AWS Signautre

Aws signuture

身体请求

Body request

错误消息

enter image description here

解决方法

根据AWS documentation,您需要在请求中发送x-amz-content-sha256标头:

所有AWS Signature版本4请求都需要x-amz-content-sha256标头。它提供了请求有效负载的哈希值。如果没有有效负载,则必须提供一个空字符串的哈希值。

似乎Postman出于某种原因未添加它。您应该检查标题,然后手动添加。

,

刚刚也遇到了这个问题 - 服务名称必须是“s3”与“S3”。

advanced authorization settings