之前面试的时候很多人会问我有关http请求头字段的意思,有些问的特别的偏,但明明实际很少用。问的我一愣一愣的,我就打算用这篇文章好好研究一下。
请求头主要表达的是客户端,也就是浏览器
具体来说http请求,分为三部分:请求行,请求头, 请求体。
下面具体说的请求头部分。
如图
Accept:表示浏览器支持的 MIME 类型。
输入值的example:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8
表示客户端支持的数据格式,或者说客户端“希望”接受到的内容类型。但不一定接收到相应的值。
所以啥是MIME类型?MIME (Multipurpose Internet Mail Extensions) 是描述消息内容类型的因特网标准。
Accept-Encoding:表示浏览器解码方式。
对于我们主动发起的ajax请求,一般数据量较少,不需要设置该字段。
Accept-Language:表示客户端接受的语言格式。
例子:zh-CN,zh;q=0.9
那个0.9代表的是zh的权重。
话说做不同语言的网站可以跟后端用这个字段配合,但我看见有人写 一般不推荐这种方法。
Connection: keep-alive , 开启HTTP持久连接
如果每次请求图片等的时候,断开tcp连接。下一个请求在连接tcp连接,就会造成对带宽的过多消耗。
如果不设置,就是默认keep-alive(长连接)
Cookie:表示服务端给客户端传的http请求状态。
因为Http是无状态协议,无法感知到上一次请求状态,所以产生了cookie。
后端可以操作这个cookie,并直接种到我们的浏览器中。
服务端通过 set-cookie这个响应头来向客户端中写入 Cookie 信息。比如说我们在做登陆信息的时候,可以直接取出来用。
DNT:(Do Not Track)表明了用户对于网站追踪的偏好。
0代表愿意被追踪。
1代表不愿意被追踪。
Host:请求头指明了服务器的域名(对于虚拟主机来说),以及(可选的)服务器监听的TCP端口号。
HTTP/1.1中必须要指明Host,如果没指明,或者指明多个,或返回404状态。
Referer:表示请求的上一个页面是什么。
我看其他的文章里有写,这个字段可以用来做访问统计。还可以做防盗链,比如你从其他站点引用了qq空间的图是现实不了的,就是通过这个字段来判定的。
User-Agent:
表示首部包含了一个特征字符串,用来让网络协议的对端来识别发起请求的用户代理软件的应用类型、操作系统、软件开发商以及版本号。
这个让我想起了js中,会用window.navigator.userAgent 来判断什么浏览器和手机系统版本号。
多加几个图里没有的字段,哈哈哈
Access-Control-Request-Method:请求方法,比如post get delete 等。
暂时先这样,后续还会改。