首页 > 解决方案 > HTTP 标头是否对空格/大小写/顺序敏感?

问题描述

让我们假设我有这些标题:

Strict-Transport-Security: max-age=<expire-time>
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains
Strict-Transport-Security: max-age=<expire-time>; preload

为了编写正则表达式,我需要知道:

标题空间敏感吗?例如max-age=<expire-time> vs. Max-age=<expire-time> ,它们是否区分大小写?例如max-age= <expire-time> vs. Max-age=<expire-time> ,它们对订单敏感吗?例如max-age=<expire-time>; preload vs. preload; max-age=<expire-time>;

标签: httpsslhttp-headershsts

解决方案


回答这类问题的来源是标准——这就是标准的用途。引用RFC 7230 第 3.2 节

每个标头字段由不区分大小写的字段名称后跟冒号 (":")、可选的前导空格、字段值和可选的尾随空格组成。

至于字段值,这取决于实际的标题。例如,Set-Cookie值中的示例区分大小写。对于Strict-Transport-Security您必须查看相关标准。在RFC 6797 中,它在第 6.1 节中说

  1. 指令的出现顺序并不重要
    ...
  2. 指令名称不区分大小写

推荐阅读