我试图直接使用来自亚马逊的S3服务的REST API,而我无法理解规范请求是什么。
我的理解是:
然后,问题是:
答案 0 :(得分:3)
canonical 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))
然后从这个定义中,系统将创建“真实”请求,意味着将对服务器执行的请求