http - 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>;
解决方案
回答这类问题的来源是标准——这就是标准的用途。引用RFC 7230 第 3.2 节:
每个标头字段由不区分大小写的字段名称后跟冒号 (":")、可选的前导空格、字段值和可选的尾随空格组成。
至于字段值,这取决于实际的标题。例如,Set-Cookie
值中的示例区分大小写。对于Strict-Transport-Security
您必须查看相关标准。在RFC 6797 中,它在第 6.1 节中说:
- 指令的出现顺序并不重要。
...- 指令名称不区分大小写。
推荐阅读
- python - 为什么 os.path.normpath 不删除第一个 //?
- postgresql - Postgresql:EXECUTE sql_cmd 与 CREATE TEMP TABLE temp_tbl AS SELECT 合并
- amazon-web-services - AWS ECS:通过 Cloudformation 创建 ECS 服务时出现 IAM 相关错误
- python-3.x - 将原始 Scapy 数据解码为人类可读的
- python - Python语音识别速度变慢
- .net - Datagrid 单元格中的文本格式
- php - 尝试更新联系人记录,但我获得执行操作的权限被拒绝 id
- c++ - 您是否使用 cv::calibrateCamera() 获得与使用 cv::fisheye::calibrate() 相同的相机矩阵结果
- python - 带有变量的字典的索引字典
- angular - InvalidValueError:在属性来源中:不是字符串;而不是 LatLng 或 LatLngLiteral:不是对象;而不是一个对象