什么是请求有效载荷?

问题描述

我正在尝试从html表单将上传文件上传到aws s3,并且我正在努力签署请求。对于请求的第一部分,我需要将一些值连接在一起以创建字符串“ CanonicalRequest”:

CanonicalRequest =
  HTTPRequestMethod + '\n' +
  CanonicalURI + '\n' +
  CanonicalQueryString + '\n' +
  CanonicalHeaders + '\n' +
  SignedHeaders + '\n' +
  HexEncode(Hash(RequestPayload))

这是我到目前为止所拥有的:

let CanonicalRequest = "Post" + '\n' +
          "/" + '\n' +
          "" + '\n' +
          "content-type:application/x-www-form-urlencoded; charset=utf-8\n host:s3.amazonaws.com\n; x-amz-date:" + Time3 + "\n" + '\n' +
          "content-type;host;x-amz-date" + '\n' +

到目前为止,我认为这是对的,但我可能完全错了。我不知道“ RequestPayload”是什么。我发现的唯一内容表明它是html的正文,但这将包括表单以及签名本身,因此不起作用。有谁知道它是什么以及我如何使它工作?

解决方法

您似乎使用了一种困难的方式来上传文件... AWS提供了一个易于与S3交互的库

const AWS = require('aws-sdk')
const S3 = new AWS.S3()

然后您可以致电S3.putObject https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/S3.html