我尝试向S3发送多部分表单请求,并根据S3 documentation我可以在授权标头或查询字符串中将签名信息添加到请求中。对我来说,授权标题看起来更简单。
Authorization: AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east 1/iam/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7
在Swift中,这只是一个字符串,如:
request.setValue("AWS4-HMAC-SHA256 Credential=AKIDEXAMPLE/20150830/us-east 1/iam/aws4_request, SignedHeaders=content-type;host;x-amz-date, Signature=5d672d79c15b13162d9279b0855cfba6789a8edb4c82c400e06b5924a6f2b5d7", forHTTPHeaderField: "Authorization")
答案 0 :(得分:0)
Authorization:
标题和查询字符串都不能说是特别“#34;更直接,"因为它们基本上是由相同的信息构建的(除了X-Amz-Expires
的添加,以及在签名代码中必要的过期逻辑添加,如查询字符串中所要求的)......但这两个选项都不适用
使用表单时 - 只在上传时才会这样做,所以我认为这就是你正在做的事情 - 签名信息是作为表单参数提供的。
请参阅http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html