为什么网络浏览器不支持 h2c(不带 TLS 的 HTTP/2)?

2024-03-24

我真的搜索了网络,但我找不到网络浏览器不支持 h2c(没有 TLS 的 http/2)的原因。任何想法,赞赏。

稍微澄清一下 http/2 和 https 使用 ALPN(这称为 h2)。 http/2 与 http 不需要 ALPN(这称为 h2c),但几乎没有网络浏览器支持它。为什么会这样呢?

我觉得对于许多资源来说,虽然真实性总是好的,但不需要保密(尽管有一些私有实现,但 http 正文的数字签名并未得到广泛支持)。考虑到不需要保密,那么h2c确实是一个好东西。


从技术上来说

HTTP/2 比 HTTPS 更好、更容易处理有几个技术原因:

  1. 使用 ALPN 在 TLS 中进行 HTTP/2 协商要容易得多,并且不会丢失像Upgrade:在普通 HTTP 中是这样的。而且它不会遇到纯文本 HTTP/2 遇到的 POST 升级问题。
  2. N% 的网络不支持主动提供Upgrade: h2c请求中的标头,而是以 400 错误进行响应。
  3. 在 TCP 端口 80 上执行 HTTP/1.1 之外的其他操作在 Y% 的情况下会中断,因为世界上充满了为此类连接“帮助”和替换/添加流中内容的中间盒。如果那不是 HTTP/1.1,事情就会崩溃(这也是为什么 brotli 也需要 HTTPS)。

意识形态上

人们正在推动网络上更多的 HTTPS,一些较大的网络浏览器开发团队共享并部分参与其中。如果仅通过 HTTPS 实现功能,这会被认为是一种奖励,因为它们会成为网站和服务迁移到 HTTPS 的另一个动力。因此,一些团队从未非常努力地(如果有的话)让 HTTP/2 在没有 TLS 的情况下工作。

几乎

至少有一家浏览器供应商很早就表示有意为通过纯文本 HTTP (h2c) 完成的用户实现和提供 HTTP/2。由于上述技术障碍,他们最终从未这样做。

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

为什么网络浏览器不支持 h2c(不带 TLS 的 HTTP/2)? 的相关文章

随机推荐

  • OS X 崩溃日志符号

    我无法使用 XCode 4 6 来符号化来自测试人员和用户的 OS X 不是 iOS 崩溃日志 崩溃日志无法拖到管理器中 并且管理器不会显示 Library Logs DiagnosticReports 中的任何崩溃日志 尽管某些日志位于该
  • Linux/Windows 中的 C/C++ 内存使用 API

    我想获取每个进程和系统范围的内存使用信息 在 Windows 中 这非常简单 GetProcessMemoryInfo 和 GlobalMemoryStatusEx 可以非常轻松地完成这些工作 例如 GetProcessMemoryInfo
  • 有没有人找到一种方法来合并 Xcode 项目或 Core Data 模型文件中的更改?

    有没有办法使用 VCS 我正在使用 git 并让它与 Xcode 文件合并 例如 如果我的同事向项目添加了一个新组 当我合并他的更改时 我会合并该组吗 或者 如果他向核心数据实体添加一个属性 我会在我的核心数据模型中获得该属性吗 核心数据和
  • 无法在 Android Studio 中解析符号 HttpGet、HttpClient、HttpResponce

    我只是复制所有的jar文件Http but Android Studio无法导入所有这些 jar 文件 它给出一个错误 Cannot resolve symbol HttpGet HttpClient HttpResponse My Act
  • 浮点精度显示(Android)

    我正在尝试制作一个程序 它接受一些用户输入 运行一些计算并输出答案 我的问题是 这个答案有时会长很多小数位 这会导致一些美观和布局问题 我只需要显示小数点后 4 位的数据 是否有办法在输出时限制这些数字的精度 数字存储在浮点数中 我正在为
  • 如何创建可滚动的结果集?

    我得到了这个简单的代码来从 MSSQL Server 2008 检索记录集 由于我设置了 ResultSet TYPE SCROLL INSENSITVE 该记录集必须是可滚动的 与 Javadocs 中的示例相同 String qry S
  • 带有私有标识符参数的符号

    我想创建一个与私有 MethodMirror 的简单名称相同的符号 但是 Symbol 的文档指出 new Symbol 的参数必须是有效的公共标识符 如果我尝试创建一个const Symbol privateIdentifier dart
  • Python 浮点除法不精确[重复]

    这个问题在这里已经有答案了 可能的重复 Python float str 浮动怪异 https stackoverflow com questions 1778368 python float str float weirdness Pyt
  • Redis CLI 未通过 Laravel 显示最近存储的密钥

    我正在尝试使用缓存我的结果redis in Laravel通过做这个 result Cache remember orders cache 10 function use orders return orders return result
  • 我有一个 contentEditable="true" 的 div,需要对输入的数字进行着色

    这是我的代码 非常适合为可编辑 div 中的数字着色 但光标将转到 div 的开头 当我按键盘箭头按钮遍历字符串时 以及当我单击 home 和 end 按钮 光标应该按预期移动 jQuery document ready function
  • 具有数据成员语法的零成本属性

    我 重新 发明了这种使用数据成员语法实现零成本属性的方法 我的意思是用户可以写 some struct some member var var some struct some member 并且这些成员访问以零开销重定向到成员函数 虽然初
  • 对话框中标题分隔符的样式

    我想知道如何摆脱 或更改颜色 对话框中的标题分隔符 它是蜂窝设备上显示的对话框标题下方的一条蓝线 我猜这是 SDK 中的相关布局 但由于没有样式属性 我不知道如何设置它的样式 如果我尝试使用 findViewById 则没有 android
  • 使用 HTTPoison 初始化模块属性

    我正在尝试像这样初始化模块属性 response HTTPoison get url ok response Poison decode response body attr response 我以前用一个文件做过这样的事情 externa
  • 转换给定时区的日期/时间 - java

    我想将此 GMT 时间戳转换为 GMT 13 2011 10 06 03 35 05 我尝试了大约 100 种不同的 DateFormat TimeZone Date GregorianCalendar 等组合来尝试完成这个非常基本的任务
  • Android提供的onKey()、OnKeyDown()和dispatchKeyEvent()方法之间的区别?

    Android提供的onKey OnKeyDown 和dispatchKeyEvent 方法有什么区别 我想知道这些都可以在何时何地使用 请对此进行一些说明 追踪源代码5 1 视图类的源码 http grepcode com file re
  • EJB @Schedule 等待方法完成

    我想编写一个每分钟执行一次的后台作业 EJB 3 1 为此 我使用以下注释 Schedule minute 1 hour 工作正常 但是 有时该作业可能需要一分钟以上的时间 在这种情况下 计时器仍然会被触发 从而导致线程问题 如果当前执行未
  • 如何将非常大的 csv 文件导入到现有的 SQL Server 表中?

    我有一个非常大的 csv 文件 其中包含约 500 列 约 350k 行 我试图将其导入到现有的 SQL Server 表中 我努力了BULK INSERT 我得到 Query executed successfully 0 rows af
  • 使用 AWS Cloudformation 跨多个子网自动扩展会引发错误

    我无法创建 Cloudformation 模板来跨 2 个不同的公共子网自动缩放 我不断收到错误消息 创建失败AWS AutoScaling AutoScalingGroup指定子网的可用区和弹性伸缩 组不匹配 我广泛研究了所有不同的模板代
  • R 中的 diff() 函数有什么作用? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么网络浏览器不支持 h2c(不带 TLS 的 HTTP/2)?

    我真的搜索了网络 但我找不到网络浏览器不支持 h2c 没有 TLS 的 http 2 的原因 任何想法 赞赏 稍微澄清一下 http 2 和 https 使用 ALPN 这称为 h2 http 2 与 http 不需要 ALPN 这称为 h