6. Syntax (语法)
本节定义Strict-Transport-Security HTTP响应头字段及其指令的语法, 并提供一些示例.
然后, 第7节 ("Server Processing Model") 详细说明主机如何使用此头字段来声明其HSTS策略, 第8节 ("User Agent Processing Model") 详细说明用户代理如何处理头字段并应用HSTS策略.
6.1 Strict-Transport-Security HTTP Response Header Field (Strict-Transport-Security HTTP响应头字段)
Strict-Transport-Security HTTP响应头字段 (STS头字段) 向UA指示它必须 (MUST) 对发出包含此头字段的响应消息的主机执行HSTS策略.
STS头字段的ABNF (增强巴科斯-诺尔范式 (Augmented Backus-Naur Form)) 语法如下所示. 它基于 [RFC2616] 第2节中定义的通用语法 (其中包括"隐含线性空白 (implied linear whitespace)"的概念, 也称为"隐含的 *LWS").
Strict-Transport-Security = "Strict-Transport-Security" ":"
[ directive ] *( ";" [ directive ] )
directive = directive-name [ "=" directive-value ]
directive-name = token
directive-value = token | quoted-string
其中:
token = <token, defined in [RFC2616], Section 2.2>
quoted-string = <quoted-string, defined in [RFC2616], Section 2.2>
本规范中定义的两个指令如下所述. 指令的总体要求是:
-
指令出现的顺序不重要.
-
所有指令必须 (MUST) 在STS头字段中仅出现一次. 指令是可选的或必需的, 如其定义中规定的.
-
指令名称不区分大小写.
-
UAs必须 (MUST) 忽略任何包含不符合本规范中定义的语法的指令或其他头字段值数据的STS头字段.
-
如果STS头字段包含UA无法识别的指令, UA必须 (MUST) 忽略无法识别的指令, 如果STS头字段在其他方面满足上述要求 (1到4), UA必须 (MUST) 处理识别的指令.
可以在其他规范中定义扩展STS头字段语义功能的附加指令, 届时为它们定义一个注册表 (具有IETF审查 [RFC5226] 的IANA策略定义).
注意 (NOTE): 此类未来指令将被仅实现本规范的UAs以及通常不符合标准的UAs忽略. 有关进一步讨论, 请参见第14.2节 ("Non-Conformant User Agent Implications").
6.1.1 The max-age Directive (max-age指令)
必需 (REQUIRED) 的"max-age"指令指定在接收到STS头字段后的秒数, 在此期间UA将主机 (从中接收消息的主机) 视为已知HSTS主机. 另请参见第8.1.1节 ("Noting an HSTS Host - Storage Model"). delta-seconds产生式在 [RFC2616] 中指定.
max-age指令的必需 (REQUIRED) 值 (如果需要, 在引号字符串转义后) 的语法定义为:
max-age-value = delta-seconds
delta-seconds = <1*DIGIT, defined in [RFC2616], Section 3.3.2>
注意 (NOTE): max-age值为零 (即, "max-age=0") 向UA发出停止将主机视为已知HSTS主机的信号, 包括includeSubDomains指令 (如果为该HSTS主机断言). 另请参见第8.1节 ("Strict-Transport-Security Response Header Field Processing").
6.1.2 The includeSubDomains Directive (includeSubDomains指令)
可选 (OPTIONAL) 的"includeSubDomains"指令是一个无值指令, 如果存在 (即, 它被"断言"), 则向UA发出信号, 表明HSTS策略适用于此HSTS主机以及主机域名的任何子域.
6.2 Examples (示例)
下面的HSTS头字段规定HSTS策略保持有效一年 (一年中约有31536000秒), 并且该策略仅适用于发出它的HSTS主机的域:
Strict-Transport-Security: max-age=31536000
下面的HSTS头字段规定HSTS策略保持有效约六个月, 并且该策略适用于发出HSTS主机的域及其所有子域:
Strict-Transport-Security: max-age=15768000 ; includeSubDomains