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

第 4 章 HTTP/1.1 的语法:追求高速化和安全性(2)

4.6 支持虚拟主机

HTTP/1.0 以使用一台 Web 服务器来处理一个域为前提,然而给每个网站准备一个服务器是不现实的。HTTP/1.1 支持使用一台 Web 服务器提供多个 Web 服务。
假设我们要访问 http://××××.com/hello 这个 URL。先说 ××××.com 部分。只要询问域名服务器,就可以知道持有该域的服务器的 IP 地址。然后,通过查看 http 部分或者域名后面的端口号(如 ××××.com:8080)来确定端口号。在 HTTP/1.1 之前,服务器实际接收的信息只有最后的路径 /hello
从 HTTP/1.1 开始,客户端要在 Host 首部中记述要发送请求的服务器名称。不管是使用 curl 命令,还是什么都不设置,都要加上该首部。假设使用同一个服务器的同一个端口提供 tokyo.××××.comosaka.××××.com 两个服务。服务器只要查看请求首部的 Host 首部,就可以判断出请求的是哪一个服务。
在使用 Web 服务器 Apache 或 nginx 的情况下,服务器可以根据主机名获取并返回服务内容。Apache 的设置示例如下所示。
NameVirtualHost *:80
<VirtualHost *:80>
ServerName tokyo.××××.com
DocumentRoot /www/tokyo
</VirtualHost>
<VirtualHost *:80>
ServerName osaka.××××.com
DocumentRoot /www/osaka
</VirtualHost>
虽然客户端只加了一个 Host,但服务器据此就可以分别提供不同的内容。

4.7 Chunk

HTTP 从版本 1.1 开始支持一些新的数据形式,其中有一个叫作 Chunk 的数据传输方式。具体来说就是将数据分成多个部分进行发送。在使用 Chunk 的情况下,比较耗时的数据传输可以提前进行。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

HTTP/1.1的发展在追求高速化和安全性方面取得了重要进展。其中,支持虚拟主机和Chunk数据传输方式为Web服务器提供了更高效的多Web服务支持和数据传输效率。此外,引入的向尾部添加首部和确认主体发送的特性增强了通信的灵活性和可靠性。另外,文章还介绍了Data URI方案,将数据本身作为URI,提高网页加载速度。总的来说,HTTP/1.1的这些新增元素和特性丰富了Web的可能性,提高了传输速度,同时也为数据管理和通信安全提供了更多选择。文章还提到了TLS的发展和HTTP/2的出现,以及HTML5和应用程序的涌现对HTTP/1.1的影响。下一章将介绍浏览器功能的改善、支持动态Web的浏览器结构XMLHttpRequest,以及HTTP/1.1的方法的语义的应用示例。

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

精选留言

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