http请求头中的host是什么意思

news/2024/5/17 15:30:33 标签: http, host, 网络, tcp

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

yum install bind-utils

那为什么不用IP+端口呢?
因为IP+端口区分的是进程(服务), 而 Host区分的是目录(网站)
我们用80端口访问1.1.1.1的apache服务,而1.1.1.1内部有很多目录(网站) 


http://www.niftyadmin.cn/n/1628794.html

相关文章

ASPxSpellChecker 未测试可拖动文本框

转载于:https://www.cnblogs.com/heyiping/p/9204210.html

java integer 1000_为什么Java中1000==1000为false而100==100为true?

我觉得楼主应该自己New 一个 Integer 然后 Ctrl 点进去看源码就知道了。我帮你看一下吧,点进去看第780行private static class IntegerCache {static final int low -128;static final int high;static final Integer cache[];static {// high value may be config…

电脑的的load是什么意思?

目录 一、查看系统负荷 二、一个类比 三、系统负荷的经验法则 四、多处理器 五、多核处理器 六、最佳观察时长 七、load的值是从何而来 首先要了解,load由以下三部分构成,任意一项激增都可能导致负载过高。 CPU(主要是由CPU决定&…

OGG初始加载过程概述

您可以使用Oracle GoldenGate来: 执行独立的批量加载以填充数据库表以进行迁移或其他用途。将数据作为初始同步运行的一部分加载到数据库表中,以准备与Oracle GoldenGate进行更改同步。15.1.1提高初始负载的性能 除了使用数据库实用程序执行的所有初始加…

java 类视图_基于类的视图有什么优势?

我今天读到Django 1.3 alpha正在发售,而最引人注目的新功能是引入class-based views .我已经阅读了relevant documentation,但我发现很难看到我可以通过使用它们获得的巨大优势,所以我在这里要求一些帮助来理解它们 .我们从文档中取一个advan…

NAT,NAPT,STUN详解

为什么我们家里的IP都是192.168开头的? - 掘金 为什么我在公司里访问不了家里的电脑? - 掘金 这是两篇很好的文章,仔细读完这两篇文章后,能够更好的理解下面的内容。 一、为什么会有IPV6和内网地址呢? IP地址一共分…

Oracle笔记(十) 约束

表虽然建立完成了,但是表中的数据是否合法并不能有所检查,而如果要想针对于表中的数据做一些过滤的话,则可以通过约束完成,约束的主要功能是保证表中的数据合法性,按照约束的分类,一共有五种约束&#xff1…

mac下利用iterm2快速登陆docker(容器)

一、打开iterm2的profiles 2、新建一个profile,并进行设置 3、具体设置 选择 login shell,即shell登陆输入shell命令 #830d26a76dfe为你要登陆的容器id docker exec -it 830d26a76dfe /bin/bash 选择工作目录为home directory4、登陆容器&#xff0c…