http你不得不知道的那些事(五)-报文头
现在开始详细分析下报文头内容:
我们先对首部进行下分类:
通用首部(请求和响应都可以用)
请求首部(只能用在请求中)
响应首部(只能用在响应中)
实体首部(描述主体的长度和内容,或者资源自身)
扩展首部(规范中没有定义的新首部)
通用首部:
connection 允许客户端和服务器指定与请求/响应连接有关的事项。
date 提供日期和时间标志,说明报文是什么时间创建的。
mime-version 给出了发送端所使用的mime版本。
trailer 分块传输使用
transfer-encoding 告知接收端为了保证报文的可靠传输,对报文采用了什么编码方式。
update 给出发送端可能想要升级使用的新版本或协议。
via 显示了报文经过的中间节点(代理、网关)。
通用缓存首部:
cache-control 用于随报文传送缓存指示
pragma 另一种随报文传送指示的方式,但并不专用于缓存。
请求信息性首部:
client-ip 提供了客户端机器的ip
from 提供了客户端用户的email地址。
host 给出了接收请求的服务器的主机名和端口号。
referer 提供了包含当前请求URI文档的URL
ua-color 提供了客户端显示器显示颜色的相关信息
ua-cpu 给出了客户端cpu的类型或制造商
ua-disp 提供了客户端显示器能力相关的信息
ua-os 给出了运行在客户端机器上操作系统名称及版本
ua-pixels 提供了客户端显示器的像素
user-agent将发起请求的应用程序名称告诉服务器
accept请求首部:
accept 告诉服务器能够发送哪些媒体类型
accept-charset 告诉服务器能够发送哪些字符集
accept-encoding 告诉服务器能够发送哪些编码
accept-language 告诉服务器能发送哪些语言
TE 告诉服务器能使用哪些扩展传输编码
条件请求首部:
expect 允许客户端列出某请求所要求的服务器行为
if-match 如果实体标记与文档当前的实体标记相匹配,就获取这份文档
if-modified-since 除非在某个指定的日期之后资源被修改过,否则就限制这个请求
if-none-match 如果提供的实体标记和当前的实体标记不匹配,就获取这份文档
if-range 允许对文档的某个范围进行条件请求。
if-unmodified-since 除非在某个指定日期之后资源没有被修改,否则就限制这个请求。
range 如果服务器支持范围请求,就请求资源的指定范围。
安全请求首部:
authorization 包含客户端提供给服务器,一遍对其自身进行认证的数据
cookie 客户端用它向服务器传送一个令牌--他并不是一个安全首部,但确实隐含了安全信息。
cookie2 用来说明请求端支持的cookie版本。
代理请求首部:
max-forward 在通往源端服务器的路径上,将请求转发给其他代理或网关的最大次数--与trace方法异同使用。
proxy-authorization 与authorization相同,只是用在代理进行认证时使用。
proxy-connect 与connect首部相同,但这个首部只在代理建立连接时使用。
响应的信息性首部:
age (从最初创建开始)响应持续时间
public 服务器为其资源支持的请求方法列表
retry-after 如果资源不可用的话,在此时间或日期重试
server 服务器应用程勋软件的名称和版本
title 对html文档来说,就是html文档源端给出的标题。
warning 比原因短语更详细的一些警告报文。
协商响应首部:
accept-ranges 对此资源来说服务器可接受的范围
vary 首部列表
安全响应首部:
proxy-authenticate 来自代理的对客户端的质询列表
set-cookie 不是真正的安全首部,但隐含有安全功能
set-cookie2 与set-cookie类似
www-authenticate 来自服务器对客户端的质询列表
实体首部:
allow: 列出对此实体执行的请求方法。
location:告知客户端实体实际上位于何处,用于将接收端定位到资源的实际位置上去。
内容首部:
content-base 解析主体中相对url是使用的基础url
content-encoding 对主体执行的任意编码方式。
content-language 理解主体时最适宜使用的自然语言
content-length 主体的长度或尺寸
content-location 资源实际所处的位置
content-md5 主体的md5校验
content-range 在整个主体中此实体表示的范围
content-type 这个主体的对象类型
实体缓存首部:
etag 于此实体相关的实体标记
expires 实体不在有效,要从原始的源端获取此实体的日期和时间
last-modified 这个实体最后一次被修改的日期。
写了这么多首部的东西,其实前端最常用的是条件请求首部和缓存首部。熟练掌握和运用条件请求首部和缓存首部是前端工程师最基本的能力,因为这是前端性能优化所必须的部分。对web安全来说,安全首部和信息首部是至关重要的。对内容传输来来,内容首部可以保证我们传输不出问题。代理首部是专门为代理服务器准备的,需要注意的是有些古老的代理服务器不理解keep-alive首部会出现问题。
说到代理就不得不说说正向代理和反向代理,很多前端的小伙伴不是很理解这个东西。
正向代理:代理了客户端,比如说我们常用的蓝灯(现在不能用了~)。
反向代理:代理服务器,比如我们说的nginx代理服务器,我们访问服务器实际上是我们在访问代理,然后代理帮我们访问服务器,因此通过一些设置也可以做到负载均衡。
以上就是首部相关的信息,有需要的童鞋可以收藏下。
共同学习,写下你的评论
评论加载中...
作者其他优质文章