我正在查看Readme.md的http-signing,这是Joyent的node-http-signature模块的一部分,它说要使用"特殊名称&#34 ;将HTTP请求目标包含在签名库中:
要在签名计算中包含HTTP请求行,请使用特殊请求行值。虽然这会使HTTP语言中的标头定义过载,但请求行在RFC 2616中定义,并且作为有用签名计算中标头的异常值,简单地使用请求行比添加单独的参数更简单。它
包括request-line
意味着将POST /url/path/here HTTP/1.1
等文字包含在签名库中。
相反draft 03 of the spec说要使用不同的特殊值"包括请求目标:
如果标题字段名称为
生成标题字段值(request-target)
,则通过连接lowercased:方法,ASCII空间和:path伪标题
是的,(请求目标)在parens中。
对于前者,请求的签名库可能如下所示:
POST /foo HTTP/1.1 + "\n"
date: Tue, 07 Jun 2011 20:51:35 GMT + "\n"
content-type: application/json + "\n"
content-md5: h0auK8hnYJKmHTLhKtMTkQ==
...而对于后者,同一请求的签名库将如下所示:
(request-target): POST /foo + "\n"
date: Tue, 07 Jun 2011 20:51:35 GMT + "\n"
content-type: application/json + "\n"
content-md5: h0auK8hnYJKmHTLhKtMTkQ==
哪个是权威的?我怀疑将有两种方法将方法和路径包含在签名库中。
我怀疑"实施规则",但我想知道真实意图。