在HTTP签名中,我应该使用“请求行”还是“目标请求”?

我正在查看Readme.md作为Joyent的node-http-signature模块的一部分,它使用“特殊名称”将HTTP请求目标包含到签名库中:

要在签名计算中包含HTTP请求行,请使用特殊的请求行值。 虽然这在HTTP语言中重载了标题的定义,但是在RFC 2616中定义了请求行,并且在有用的签名计算中作为标题的exception值,简单地使用请求行比单独添加一个单独的参数更简单它。

包括request-line意味着包括POST /url/path/here HTTP/1.1文本到签名库。

相反,规范03草案说,使用不同的“特殊价值”来包含要求的目标:

如果头域名称是(request-target)则通过连接小写:方法,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== 

那么哪个是权威? 我怀疑是否有两种方法将path和path包含在签名库中。

我怀疑“实施规则”,但我想知道真正的意图。