简介

        HTTP请求中经常看到几个与网址有关的头(header):host、origin、referer,本文将介绍这几个头的含义以及作用等。

        HTTP请求示例:

HTTP--host/origin/referer--介绍/用途/作用_http

概述

host

origin

referrer

作用

描述请求将被发送到的目的地

描述请求从哪个网址而来


当前请求页面的来源页面的地址。

(当前页面是通过此来源页面里的链接进入的)


格式

域名/ip+端口号(可选)


协议+域名+端口号(可选)


协议+域名+查询参数(不包含锚点信息)

使用范围

在任何类型请求中,request都会包含此header信息

CORS跨域或POST请求

用于所有类型的请求。

由来

http1.1中为解决虚拟主机问题而提出

H5中为CORS跨域提出

-

host

含义

简介


请求头host指明请求将被发送到的目的地。


格式


域名或ip+端口号

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


使用范围


在任何类型请求中,request都会包含此header信息。


示例


test.com


用途

        host这个header是http1.1中为解决虚拟主机问题而提出。

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

        不同的域名通过 A 记录或者 CNAME 方式可以连接都同一个 IP 下,同一个 IP 也可以设置多个不同站点,那么访问不同的域名都转发到同一 IP ,怎么区分这些不同的站点呢,就是用的 Host 字段。       

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

HTTP--host/origin/referer--介绍/用途/作用_虚拟主机_02

origin

含义

含义


请求头origin描述请求从哪个网站而来。


格式


协议+域名+端口号


使用范围


只有下面两种情况会携带origin请求头


  1. 跨域请求
  1. 可以看到 response 有对应的 header:Access-Control-Allow-Origin
  1. 同域时发送post请求


示例



用途

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

referer

含义

含义


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


格式


协议+域名+端口号+路径+请求参数(注意,不包含 hash值)

referrer 存在隐私问题。比如说在请求外部网站的时候,url 的参数信息如果包含隐私,那么久暴露了。 


使用范围


以下几种情况下,Referer 不会被发送:


  • 直接输入网址或通过浏览器书签访问;
  • 当前请求页面采用的是非安全协议,而来源页面采用的是安全协议(HTTPS);
  • 使用 JavaScript 的 Location.href 或者是 Location.replace();
  • 使用 html5 中 noreferrer
  • 来源页面采用的协议为表示本地文件的 "file" 或者 "data" URI;


示例


用途


  • 防盗链。
  • 网站访问自己的图片服务器,图片服务器取到Referer来判断是不是自己的域名,如果是就继续访问,不是则拦截。
  • 数据统计。
  • 统计用户是从哪里链接过来访问的。