Joã*_*lva 10 networking http network-protocols web
上周我在我的计算机网络课程中开始大惊小怪,需要Host在HTTP 1.1 GET消息的标题中使用强制条款.
我提供的原因,无论是在网上写的还是我的同学都对我大喊大叫,总是一样的:支持虚拟主机的需要.但是,我会尽量清楚,这似乎没有意义.
据我所知,为了允许两个域托管在一台机器上(并因此共享相同的IP地址),必须存在一种区分两个域名的方法.
我不明白的是为什么这是不可能实现这一目标没有一个Host条款(HTTP 1.0使用绝对样式)网址(例如GET http://www.example.org/index.html),而不是一个相对(例如GET /index.html).当HTTP消息到达服务器时,它(服务器)会将消息重定向到适当的主机,而不是通过查看Host子句,而是通过查看消息请求行中存在的URL中的主机名.
如果你们中的任何一个铁杆黑客能够帮助我理解我在这里错过了什么,我将非常感激.
这个在这个帖子中讨论过:
对HTTP/2.0及其基本原理的适度建议.
- 向客户端请求添加标头,指示客户端正在访问的URL的主机名和端口.
基本原理:商业服务器维护人员最需要的功能之一是能够在单个端口上运行单个服务器,并根据URL中的主机名使其响应不同的顶级页面.
制作一个绝对的请求的URI需要(因为有没有办法让客户知道服务器上的房屋的一个或多个网站事先是否)的建议:
重新提出第一个提议,将主机名合并到某处.这将是最简洁的URL本身: -
Run Code Online (Sandbox Code Playgroud)GET http://hostname/fred http/2.0这是代理重定向的语法.
到这个论点是由:
由于会有一些客户端混合,一些支持主机名报告而另一些不支持,因此这些信息如何到达服务器并不重要.由于无关紧要,因此更容易实现的解决方案是新的HTTP请求标头字段.它允许所有客户端和服务器像现在一样操作,无需更改代码.实际需要主机名信息的客户端和服务器可以使用微小的mod来发送包含URL的额外头字段并对其进行处理.
[...]
我所建议的是,有一种更好的方法来实现向服务器提供主机名信息,不涉及破解请求语法,并且可以向后兼容所有客户端和服务器.
随意阅读以自己发现最终决定.但要注意,在那里迷路很容易.