1. host

1.1 定义

Host 请求头指明了请求服务器的域名/IP地址和端口号。

组成:域名+端口号

例子:a.com:8080

如果没有给定端口号,会自动使用被请求服务的默认端口(比如请求一个HTTP的URL会自动使用80端口)。

HTTP/1.1 的所有请求报文中必须包含一个 Host 头字段。如果一个 HTTP/1.1 请求缺少 Host 头字段或者设置了超过一个的 Host 头字段,一个400(Bad Request)状态码会被返回。

1.2 用途

我们知道,不同的域名通过 A 记录或者 CNAME 方式可以连接都同一个 IP 下,同一个 IP 也可以设置多个不同站点,那么访问不同的域名都转发到同一 IP ,怎么区分这些不同的站点呢,就是用的 Host 字段。这样每次访问都会根据不同的 Host 的信息请求到不同的站点上面。

简而言之,就是主要应用在虚拟主机技术上。虚拟主机(virtual hosting)即共享主机(shared web hosting),可以利用虚拟技术把一台完整的服务器分成若干个主机,因此可以在单一主机上运行多个网站或服务。

比如说有一台 ip 地址为 11.11.11.11 的服务器,在这台服务器上部署着淘宝、京东、拼多多的网站,并且配置了三个虚拟主机:a.com, b.com, c.com, 这三个域名都指向 11.11.11.11。 当我们访问 c.com 的网站时,看到的是拼多多的页面而不是淘宝和京东的页面,原因就是 Host 请求头决定着访问哪个虚拟主机。

HTTP Headers

2. referer

2.1 定义:

Referer 首部包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。

产生条件:从一个页面跳转到另一个页面的时候,会产生Referer,比如从localhost:8088跳转到localhost:8080

例子:http://localhost:8088/index.html

HTTP Headers

HTTP Headers

HTTP Headers

2.2 用途

CSRF跨站点请求伪造(Cross—Site Request Forgery)预防
 

3. origin

3.1 定义

请求首部字段 Origin 指示了请求来自于哪个站点。该字段仅指示服务器名称,并不包含任何路径信息。

只有跨域请求或者同域时发送post请求,才会携带origin请求头。

组成:协议+域名+端口号

HTTP Headers

HTTP Headers

HTTP Headers

3.2 用途

用于 CORS: 当我们的浏览器发出跨站请求时,服务器会校验当前请求是不是来自被允许的站点。服务器就是通过 Origin 字段的值来进行判断。

相关文章: