详解 HTTP:协议基础与 Go 语言实现
[日] 涩川喜规
《Go 系统编程》作者
407 人已学习
立即订阅
登录后,你可以任选4讲全文学习
课程目录
已完结/共 23 讲
时长 24:41
时长 19:39
时长 06:49
时长 00:38
详解 HTTP:协议基础与 Go 语言实现
15
15
1.0x
00:00/00:00
登录|注册

第 7 章 HTTP/2 和 HTTP/3 的语法:重新定义协议(2)

7.4 用于 JavaScript 的新的通信 API

Web 服务已经成为社会的基础设施,使用了 Ajax 等技术的动态交互式网站被广泛使用。为了让不断扩展的规范完美适配整个 Web 生态系统,重新设计了 XMLHttpRequest 的 Fetch API 应运而生。另外,仅通过客户端的简单的 HTTP 请求难以高效进行实现的情况也在不断增加。为了解决该问题,出现了 Server-Sent Events、WebSocket 和 WebRTC(Web Real-Time Communication,网页即时通信)。
Fetch API
重新设计了客户端发出的 HTTP 请求。
Server-Sent Events
用于实现服务器到客户端的通信。
WebSocket
用于实现高效的双向通信(会修正错误)。
WebRTC
基于 UDP 实现 P2P 通信(也可以是经由服务器的通信)中的视频、声音和数据的通信。

7.4.1 FetchAPI

与 XMLHttpRequest 一样,Fetch API 也是执行服务器访问的函数。Fetch API 用于 JavaScript,其特征如下所示。
与 XMLHttpRequest 相比,易于控制对源服务器之外的访问等 CORS 处理
遵循 JavaScript 的现代异步处理的写法——Promise
能够控制缓存
能够控制重定向
能够设置 Referer 策略
能够从 Service Worker 内部使用
虽然有人说 Fetch API 是底层 API,而且 W3C 的规范中也将其描述为底层 API,但这并不代表它能在套接字层进行处理。利用 Fetch API 控制缓存等也不是不可能,但存在各种安全方面的限制,比如有些首部在收发数据时存在限制、必须严格遵守同源策略等,导致 Fetch API 依然是限定于 HTTP 请求的沙箱。Fetch API 无法用于从浏览器通过 ssh 连接外部服务器、发送 git 协议、开发 Web 服务器等。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了现代Web通信技术的重要方面,包括HTTP/2和HTTP/3协议的语法重新定义以及与之相关的新技术。Fetch API的现代异步处理方式和更多控制缓存、重定向等功能,使其成为XMLHttpRequest的替代品。此外,文章还介绍了Server-Sent Events、WebSocket和WebRTC等技术在服务器到客户端通信、双向通信和P2P通信中的应用。WebRTC的使用场景包括视频通话系统、实况转播、多人在线游戏和IP电话终端等领域。同时,文章还介绍了WebRTC的技术元素,包括RTCPeerConnection、SDP和ICE等。另外,HTTP Web推送作为一种新的通知功能结构,也在本文中得到了介绍。总的来说,本文内容丰富,对于了解和应用现代Web通信技术具有重要参考价值。文章还介绍了HTTP/2和HTTP/3协议的特点,以及对Web通信效率提升的影响。HTTP/2提高了并行处理的数量,对首部进行压缩以缩减大小,并添加了设置优先顺序的功能。而HTTP/3进一步缩短了连接时间,实现了高速化,并面向移动终端进行了优化。文章还展望了Web未来的发展,包括WebPackaing、Signed Exchange以及使HTTP/3后台的QUIC通用化以用于WebRTC后台的WebTransport等。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《详解 HTTP:协议基础与 Go 语言实现》
立即购买
登录 后留言

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部