php - AWS - 真正的规范请求是什么?

标签 php rest amazon-web-services amazon-s3

我正在尝试直接使用来自 Amazon 的 S3 服务的 REST API,但我不明白什么是规范请求。

我的理解是:

  • 您需要授权 header 或查询字符串参数(我将使用 header )
  • 此授权 header 包含散列的 HTTP 请求(规范请求)
  • 此 HTTP 请求需要经过哈希处理的有效负载,然后连接成更长的字符串。
  • 这个字符串被散列了几次。
  • 结果是身份验证 header 。

Authentication header creation line

那么,问题是:

  • 规范请求与真实请求相同?
  • 规范的请求字符串只生成一次,然后用于下一个请求?

最佳答案

规范请求只是一个词汇。

The canonical request is the same as the real request?

代表真实的请求;根据您的屏幕截图,它被定义为

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

当然,如果你将那个严格传递给你的浏览器,它不会被理解,也不会被执行,所以它会被转换(使编码更好等......)

例如,您将获得定义为您的请求的规范表示

CanonicalRequest =
  "GET" + '\n' +
  "http://s3.amazonaws.com/examplebucket" + '\n' +
  URI-encode("marker")+"="+URI-encode("someMarker")+"&"+URI-encode("max-keys")+"="+URI-encode("20") + "&" +URI-encode("prefix")+"="+URI-encode("somePrefix") + '\n' +
  Lowercase("host")+":"+Trim("s3.amazonaws.com")+"\n"+Lowercase("x-amz-<something>")+":"+Trim("<the_value>")+ '\n' +
  "host;x-amz-<something (same as above)>" + '\n' +
  HexEncode(Hash(RequestPayload))

然后根据这个定义,系统将创建“真正的”请求,这意味着将针对服务器执行的请求

关于php - AWS - 真正的规范请求是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37664755/

相关文章:

PHP mySQL UPDATE 脚本不会执行

php - MySQL从用户id获取积分

c# - Visual Studio 2012 中的 SOAP 服务

json - 在一个盒子里休息后端?

javascript - REST 或 REST-persistable 在 javascript 中是什么意思

amazon-web-services - Amazon Web Services - EC2 - Active Directory(域 Controller )|网络服务器 (IIS) |数据库服务器(SQL 服务器)

python - SageMaker 线性学习器结果不准确?

node.js - AWS CodeDeploy 在应用程序启动时卡住

javascript - 如何使 bootstrap Voting 片段起作用,改变 MySQL 中的值

php - 使用PHP中的ssh2函数检查连接