RFC 中关于 HTTP/2 区分大小写的问题似乎存在矛盾

2024-03-10

HTTP/2 的 RFC 中有一些令人困惑的术语,我希望能更清楚一些。

根据 RFChttps://www.rfc-editor.org/rfc/rfc7540#section-8.1.2 https://www.rfc-editor.org/rfc/rfc7540#section-8.1.2

就像在 HTTP/1.x 中一样,标头字段名称是 ASCII 字符串 以不区分大小写的方式比较的字符。然而, 标头字段名称必须先转换为小写 HTTP/2 中的编码。 A包含大写标头的请求或响应 字段名称必须被视为格式错误

这似乎概述了两个相互冲突的想法

  • HTTP/2 中的标头字段名称不区分大小写
  • 如果您接收或发送的字段不是小写,则请求/响应格式错误。

如果包含非小写标头的请求或响应无效,如何将其视为不区分大小写?


“HTTP”有两个级别:一个更抽象的上层,包含 HTTPsemantic (e.g. PUT资源r1),以及对该语义进行编码的较低层。将这两者分别视为 HTTP 的应用层和 HTTP 的网络层。

应用层可以完全不知道HTTP请求是否语义化PUT r1已以 HTTP/1.1 或 HTTP/2 格式发布。
另一方面,同样的语义,PUT r1,网络层在 HTTP/1.1(文本)和 HTTP/2(二进制)中的编码方式不同。

规范的引用部分应在第一句中解释为引用应用程序层:“如 HTTP/1.1 中的标头名称应不区分大小写进行比较”。
这意味着如果应用程序被询问“is headerACCEPT存在吗?”,应用程序应该以不区分大小写的方式查看标头名称(或者确保实现提供这样的功能),并返回true if Accept or accept存在。

第二句话应该解释为指的是网络层:兼容的 HTTP/2 实现必须通过网络小写发送标头,因为这就是 HTTP/2 的方式encodes要通过线路发送的标头名称。

没有什么可以阻止兼容的 HTTP/2 实现接收content-length: 128(小写),然后将此标头转换为Content-Length: 128当它可供应用程序使用时 - 例如为了最大程度地兼容 HTTP/1.1,其中标头的首字母大写(例如打印在屏幕上)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

RFC 中关于 HTTP/2 区分大小写的问题似乎存在矛盾 的相关文章

随机推荐

  • 如何使用 ElementRef 和 Renderer2 将角度指令分配给 html 元素?

    我正在 Angular 6 中开发拖放应用程序 在拖放操作中 我正在动态创建新的 HTML 元素 DIV textarea 等元素 并为其分配样式 属性 默认 x 和 y 坐标通过使用应用程序的 ElementRef 和 Renderer2
  • DatabaseGenerateOption.Identity 不生成 Id

    使用 EntityFramework 代码优先 我创建了一个简单的Foo桌子 这是我的实体 public class Foo DatabaseGenerated DatabaseGeneratedOption Identity public
  • 如何解决 django.db.utils.IntegrityError: (1364,“字段‘名称’没有默认值”)

    我在尝试为 Django 项目创建超级用户时收到此错误 不确定哪个表需要默认值 name column 为我的 Django 项目成功创建迁移后 我运行了python manage py createsuperuser创建超级用户并得到以下
  • 以编程方式在 Eclipse 中导入库

    有没有办法以编程方式将库 Jar 文件 放入 Eclipse 项目中 到目前为止 我已经成功地使用以下命令以编程方式对其进行了外部引用 IPath path new Path C myfolder mylibrary jar librari
  • 如何将 ggplot2 grobs 与数据关联起来?

    例如 给定一个点的 ggplot 您如何找出给定点对应的数据行 样例图 library ggplot2 p lt ggplot mtcars aes mpg wt geom point facet wrap gear 我们可以得到包含点的
  • EXC_BAD_ACCESS绘制阴影

    我试图向我的 UIView 添加阴影 但在我的 drawRect 方法中我得到了 EXC BAD ACCESS 我用的是ARC void drawRect CGRect rect CGColorRef lightColor UIColor
  • cakephp 模型关联/与同一张表连接[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我有一张包含父母和孩子的桌子 我希望
  • Spring Security:@PreAuthorize仅与@RequestMapping一起使用

    我有一个 Spring MVC 控制器 想使用 Spring Method Security 来保护它 在下面的例子中it works RequestMappingand PreAuthorize注释相同的方法 Controller pub
  • CoordinatorLayout 不工作

    我正在尝试实施一个CoordinatorLayout从新公布的Android 设计支持库 http android developers blogspot co uk 2015 05 android design support libra
  • 根据相关模型使用查询参数进行过滤

    我正在尝试根据相关模型过滤集合 我已经尝试了多种方法 但无法使其工作 App BetroundStatsController Ember ArrayController extend needs betround queryParams q
  • WCF 请求处理线程是否敏捷?

    我看过很多关于敏捷 Asp Net 请求处理如何的文档 我想知道 WCF 请求处理的情况是否相同 我们可以相信启动 Wcf 请求处理的线程将完成它吗 我正在维护一个 Wcf 应用程序 其中很多地方都使用 ThreadStatic 变量 虽然
  • 3D曲线拟合

    我有离散的规则网格a b点及其对应的c值 我进一步对其进行插值以获得平滑的曲线 现在 根据插值数据 我还想创建一个用于曲线拟合的多项式方程 如何用多项式拟合 3D 图 我尝试在 MATLAB 中执行此操作 我使用 MATLAB r2010a
  • 作为原始“docker run”重新连接到容器

    我有一些容器正在运行 有时终端中的连接会丢失 容器仍然完美运行 如何重新连接到相同的用户进程 问题是 当我做docker exec it name bash 我得到了一个新的 root 用户 但随后我需要停止原始用户启动的应用程序以使它们进
  • 在 PyDev 中使用协议缓冲区时导入未定义的变量

    我有一个使用协议缓冲区的 PyDev 项目 Protocol buffer 文件位于由 protoc 编译器生成的 zip 文件中 当我运行程序时 一切正常 但是 PyDev 为每个枚举常量报告 未定义的导入变量 例如 import mod
  • 如何在 d3 中的水平条形图上的 x 轴上添加一条线

    我想在水平条形图上添加一条线 如图所示 在本例中 该线应代表 x 轴上的 270 但我收到错误无效路径属性 这里是笨蛋代码 http plnkr co edit WaDnDRIIWZotI3PrpUdN p info var info na
  • 使用 C# 控制另一个应用程序

    我需要通过模拟鼠标移动和键盘输入来控制其他应用程序 我如何在 C 中实现这一点 有可能吗 你看过吗White http www codeplex com white罢工 gt 测试栈 https github com TestStack W
  • Laravel 和 Elixir 的基础

    应该如何将 Foundation 与 Laravel 结合使用 我想我应该安装 Foundationvendor文件夹与bower install foundation 这导致有一个vendor bower components我有 Fou
  • Integer.parseInt() 和 Integer.toString() 运行时

    Integer parseInt String i 和 Integer toString int i 的运行时间都是 O n 吗 是的 他们两个Integer parseInt 1000 and Integer toString 1000
  • 色彩图三种颜色

    我有一个包含正电流和负电流 分别为上升流和下降流 的 netcdf 文件 我想创建一个轮廓 其中下降流为绿色 上升流为红色 0 为黑色 到目前为止 这是我的代码 包括 Mathworks 网站上的一些代码https nl mathworks
  • RFC 中关于 HTTP/2 区分大小写的问题似乎存在矛盾

    HTTP 2 的 RFC 中有一些令人困惑的术语 我希望能更清楚一些 根据 RFChttps www rfc editor org rfc rfc7540 section 8 1 2 https www rfc editor org rfc