Host 是 HTTP 1.1 协议中新增的一个请求头,主要用来实现虚拟主机技术。
虚拟主机(virtual hosting)即共享主机(shared web hosting),可以利用虚拟技术把一台完整的服务器分成若干个主机,因此可以在单一主机上运行多个网站或服务。
举个栗子,有一台 ip 地址为 61.135.169.125 的服务器,在这台服务器上部署着谷歌、百度、火狐的网站。为什么我们访问 https://www.google.com 时,看到的是 Google 的首页而不是百度或者淘宝的首页?原因就是 Host 请求头决定着访问哪个虚拟主机。
在一个的服务器中,可能拥有多个 Host 的应用服务,此时仅仅通过 IP 无法访问到对应的服务,可通过 Host
来进行定位。
Host
是唯一客户端必须携带的请求头,如果缺失了该请求头则会返回 400 状态码。在 HTTP/2 以及 HTTP/3 中,以一个伪头 :authority
代替。
如果通过 curl
模拟 Host,可通过请求 IP 地址,并明确指定 Host 头部。
# 请求成功
$ curl http.devtool.tech #ping也可以直接得到其ip
# 获取到其 IP 地址
$ dig +short http.devtool.tech
76.223.126.88
# 直接请求 IP,导致找不到该应用
$ curl 76.223.126.88
# 请求成功
$ curl 76.223.126.88 -H "Host: http.devtool.tech"
centos安装dig文章来源:https://www.toymoban.com/news/detail-538124.html
yum install bind-utils
那为什么不用IP+端口呢?
因为IP+端口区分的是进程(服务), 而 Host区分的是目录(网站)
我们用80端口访问1.1.1.1的apache服务,而1.1.1.1内部有很多目录(网站) 文章来源地址https://www.toymoban.com/news/detail-538124.html
到了这里,关于http请求头中的host是什么意思的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!