当前位置: 首页 > 知识库问答 >
问题:

S3预签名上传url错误

张星洲
2023-03-14

我试图使用S3预签名的PUT url执行文档上传。我使用java AWSSDK(GeneratePresignedUrlRequest.java)生成url。此url生成代码位于AWS API网关后面的lambda函数中。

然而,当我在Postman中复制生成的url时,我遇到了以下错误

<Error>
<Code>AccessDenied</Code>
<Message>
There were headers present in the request which were not signed
</Message>
<HeadersNotSigned>host</HeadersNotSigned>
<RequestId>6E624EC66091A099</RequestId>
<HostId>
9HnUUZpa9zUWfyzuNrZtRkoN2CYxH8V6rqx5QgsMFC6foTZKuG5qmZL5ThnUXooYPk2reFzKKUg=
</HostId>
</Error>

生成的url是“https://

关于在生成url时需要更正的内容,有什么建议吗?

共有1个答案

仇经武
2023-03-14

该错误确实与“缺少标题”有关,但与误导性的“主机”无关。在X-Amz-SignedHeaders=content type%3Bhost中,在“主机”之前的值“content type”,需要在http客户端使用预先签名的url将文件上载到S3时显式提供为请求头。

我已经用java生成了预签名的url

GeneratePresignedUrlRequest GeneratePresignedUrlRequest=new GeneratePresignedUrlRequest(桶名称,对象键). with method(Httpmethod. PUT). with ContentType("应用程序/pdf"). with过期(过期);

因此,据我所知,S3希望值为“application/pdf”的内容类型成为预签名url请求的一部分,作为签名匹配的标题。

 类似资料:
  • 我需要上传一个文件到S3与邮递员测试。我有一个从S3生成的预签名URL。 但是我不知道如何正确地配置postman,以便对生成的预签名URL执行此PUT请求。 邮件头格式错误的postman上的响应是: 预签名请求的参数: 我得到了URL,然后在邮递员中输入它,用PUT请求,但标题不完整?1.如果我在头上添加content-type,服务器2没有响应。在请求的正文中,Im以“二进制”的形式附加文件

  • 标题说明一切。这是我的代码; 我使用节点强大的文件。 成功上传后,url变量返回s3 url,类似以下内容; 下面是我的参数 我错过了什么?

  • 问题内容: 我正在尝试使用预签名的URL将文件上传到Amazon的S3。我从生成URL的服务器获取URL,并将其作为JSON对象的一部分发送给我。我将URL作为字符串获取,如下所示: https://com-example-mysite.s3-us- east-1.amazonaws.com/userFolder/ImageName?X-Amz-Security- Token=xxfooxx%2F

  • 我正在使用AWS JAVA SDK自动调用设备场。我已经成功地创建了project、创建了upload并生成了S3预签名url,但现在我必须使用这个预签名url发送IPA文件。 这是我的代码,请让我知道我做错了什么。我认为我没有以正确的方式将文件发送到服务器。请共享使用预签名url发送文件的代码示例。我已经尝试了许多不同的方法将文件发送到设备场。 任何帮助将不胜感激。

  • 有没有办法让预签名的aws上传URL在出现错误时返回json响应,而不是xml响应。 目前,如果url过期,它会返回如下内容。 如果这是json响应就好了。

  • 我有一个从AWS S3预先签署的上传网址上传视频文件。在邮递员上测试视频成功上传。然而,我得到一个403返回时,实施改造。我无法对此任务使用多部分上传。 服务调用: 上传: 我已经确保URL是正确的。内容类型标题也被添加,邮递员截图附后。得到403禁止错误 邮递员截图 我发现了这个相关的问题,但我仍然得到一个403。使用改造2 将文件上传到 AWS S3 预签名 URL 有什么建议吗?