0%

HTTP请求头中host的作用

  1. 前言
  2. http请求头中host字段的作用

前言

在发送HTTP请求时,由于忘记添加host头信息,导致向阿里云服务器发送请求时,服务器响应400,且服务器软件并没有收到请求信息;

但是在局域网中部署一台相同操作系统、相同服务器软件时,请求发送就能成功;

排除服务器软件和操作系统的错误后,发现问题出在host头信息上。在此对host的作用做简单记录。

http请求头中host字段的作用

一篇文章详解请求头Host的概念

http头中Host字段的作用

一个HTTP请求报文的格式为:

1
2
3
4
5
POST  /user/login HTTP/1.1
Host: 127.0.0.1
Content-Type:application/json

{}

这段报文中指定了方法POST,路由/user/login,协议HTTP/1.1,以及头信息Host, Content-Type和内容{}

发送这段报文时,通常通过“ip + 端口”指定接收方。

同时,也可以通过“域名 + 端口”指定接收方,通过这种方式发出的请求会被部署在某个位置的域名解析服务器(Domain Name System,DNS)进行解析,获取到域名背后的ip,实质上还是通过ip访问。

但是在互联网中,多个不同的域名可以同时指向一个ip,例如www.ccc.com, www.aaa.com, www.bbb.com三个域名都指向了同一个ip:192.168.0.1(可以在C:\Windows\System32\drivers\etc\hosts中添加几行192.168.0.1 www.aaa.com来实现)

但是服务器收到请求后,能看到的只是发送者的ip地址,并不能识别出域名。

此时记录在头信息中的host字段就派上了用场,它记录了发送请求的客户端所请求的主机信息,常见形式有:

  • IP + 端口:host: '127.0.0.1:8888'
  • 域名+端口:host: 'www.aaa.com:8888'
  • 域名或IP,没有端口:host: '127.0.0.1' or host: 'www.aaa.com',这种情况一般是默认80或443端口;

这样服务器收到请求后,就可以根据这个字段对不同的域名和端口进行区分。