2.2. Derived Components (派生组成部分)
2.2. Derived Components (派生组成部分)
除 HTTP 字段外, 还有许多不同组成部分可从被签名 HTTP 消息的控制数据, 签名上下文或其他方面派生. 此类派生组成部分可通过定义组成部分名称, 可能参数, 消息目标及其组成部分值的派生方法而纳入签名基.
派生组成部分名称必须以 "at" (@) 字符开头. 这将派生组成部分名称与 HTTP 字段名区分开, 后者按 [HTTP] 第 5.1 节不得包含 @ 字符. HTTP 消息签名的处理器必须将派生组成部分名称与字段名分开处理, 如第 7.5.1 节所述.
本规范定义下列派生组成部分:
@method 请求使用的方法 (第 2.2.1 节).
@target-uri 请求的完整目标 URI (第 2.2.2 节).
@authority 请求目标 URI 的 authority (第 2.2.3 节).
@scheme 请求目标 URI 的方案 (第 2.2.4 节).
@request-target 请求目标 (第 2.2.5 节).
@path 请求目标 URI 的绝对路径部分 (第 2.2.6 节).
@query 请求目标 URI 的查询部分 (第 2.2.7 节).
@query-param 请求目标 URI 经解析并编码的查询参数 (第 2.2.8 节).
@status 响应的状态码 (第 2.2.9 节).
附加派生组成部分名称在 "HTTP Signature Derived Component Names" 注册表 (第 6.4 节) 中定义.
派生组成部分值取自签名的目标消息上下文. 该上下文包括消息自身的信息, 如其控制数据, 以及签名者或验证者持有的任何附加状态与上下文. 特别地, 在对响应签名时, 签名者可通过使用 req 参数 (第 2.4 节) 纳入源自相关请求的任意派生组成部分.
request: 从 HTTP 请求消息派生且结果应用于该消息的值, 如 [HTTP] 第 3.4 节所述. 若签名的目标消息为响应, 可通过按第 2.4 节定义使用 req 参数纳入针对请求消息的派生组成部分.
response: 从 HTTP 响应消息派生且结果应用于该消息的值, 如 [HTTP] 第 3.4 节所述.
request, response: 从请求消息或响应消息派生且结果可应用于任一类的值.
派生组成部分定义必须定义其可应用的全部目标消息类型.
派生组成部分值必须限制为可打印字符与空格, 不得包含任何换行字符. 派生组成部分值不得以空白字符开头或结尾.