我在分享一下,四大请求首部字段之一,我在之前的一篇文章--《常见Http首部字段》写道了常见的首部字段,里面包含4种常见的请求首部字段,但是我并没有详细的解释这些字段,咱们大家都是讲究的人,既然写了咱们就写的明明白白的,我在《通用首部字段详解--四大首部字段之一》中详解了通用首部字段,今天我们就看看在四大首部字段中字段最多的请求首部字段(19个),
请求首部字段,顾名思义就知道,使用在请求方,那只能携带客户端的信息,客户端一些请求要求,客户端要求响应的优先级之类的,接下来咱们就看看这19字段的
1、 Accpet
Accept的意思-接受,哪聪明的小伙伴是不是就可以猜到了呢,没错它就是来告知服务器客户端能接受的“媒体类型”,“媒体类型”有是什呢,其实我们可以分成,文本类型、图片类型、视频类型、还有二进制类型
文本类型 text/html, text/css ......
图片类型:image/png image/jpg image/gif .....
视频类型:video/mpeg video/quitime .......
应用程序的二进制 : application/zip applilcation/octet-stream........
主要的目的就是告诉服务器,客户端能够接受的媒体类型,多个类型以逗号隔开,如果加权重的话以分号;隔开q=1,q的是指0-1最多三位小数的数字,默认是1
2、Accept-Charset
Accept-Charset 字面意思大家都可想而知,没错就是客户端可接受的字符集,也可以理解为优先处理字符集,当然q可以一起使用。
3、 Accept-Language
字面意思大家都可想而知,没错就是客户端可接受的自然语言,也可以理解为优先处理的语言,当然q可以一起使用。
4、 Accept-Encoding
字面意思大家都可想而知,没错就是客户端可接受的编码格式,也可以理解为优先处理的编码格式,当然q可以一起使用。
常用的 gzip comperss
5 、If-Match
这个字段比较有意思,它的值是一个"能够表示唯一资源的字符串“,是响应首部字段的ETag的值,作用是和响应端的ETag做比较,如果值一致,响应端就会返回200 和资源,如果不一致就会返回412,客户端再次请求资源
6、If-None-Match
这个和If-Match左右相反
7、If-Modified-since
这个字段也比较有意思,当请求首部携带这个字段请求资源的时候,服务器会用请求首部字值:’日期值‘和资源实体的Last-Modified对比,
如果一样就返回304
否则返回200 和响应体
8、If-Unmodified-Match
和If-Modified-since相反但是,如果一样就返回412,客户端再次请求
9、If-Ranges
这个字段也比较有意思,他一般结合Range请求首部字段使用,它的值也是一个"能够唯一表示资源的字符串“,服务器会和ETag的值做比较,
如果这一致返回206 和请求的返回值
如果不一致直接返回200和全部的响应资源
10、Range
这个字段用于范围请求,如果服务器支持范围请求,在请求首部可以添加这个字段,值为”batys:1000-10000“表示请求的范围是100-10000区间,
服务器发现范围请求没有超过资源范围,就会返回206 ok
如果请求的范围超过资源的范围就会返回200ok,
如果服务器不支持也会返回200ok
11、Host
这个字段一般会出现在,同一个ip下多个虚拟机的请求,用于区分同于ip下不同虚拟机
12、From
From:’邮箱地址‘,告知服务器如果有什么问题可以联系这个邮箱
13、Authorization
用于服务器要求客户端验证时,请求时带的字段(一般是DIGUST和BASIC验证,可以看《DIGEST认证》《BASIC认证》)
14、Proxy-Authorization
用服务器要求代理端web验证时,请求时带的字段
15、User-Agent
客户端的一些信息,有时候会带用户的邮箱
16、Referer
用户表示请求原始方的URI
17、Expcet
询问服务器能不能做某些事情,
如果服务器可以做到返回100 contiune
否则 417 Expectation Failed
18、TE
大家还记得Accept-Encoding首部字段吗?TE和Accept-Encoding功能很像,用于能够处理的传输编码格式,不过另外还有一个功能还可以知道Trailer分块格式
19、Max-Forwrads
这个字段也是非常有意思的,他用于最大逐跳,他的值是阿拉伯数字,主要用于测试中间服务器那个出问题了,比如现在有一个请求需要经过10个中间服务器才能请求到真正的服务器,但是突然中间有个服务器down,其实前端是不知道那个服务器down,就需要请求首部加入Max-Forwrads来测试那个服务器出现问题了。