HTTP请求报文属性详解

HTTP请求报文组成:请求行+请求头+请求体

注意:请求体和URL都可以传递请求参数。

常见请求头属性:

1.Accept  作用:浏览器客户端用来告诉服务端能接受什么类型的响应。

例如:  Accept: text/html  代表浏览器可以接受服务器回发html文档,如果服务器无法返回text/html类型的数据,服务器应该返回一个406错误(non acceptable)

通配符 * 代表任意类型。如: Accept: */*  代表浏览器可以处理所有类型

2.Accept-Encoding 作用:浏览器客户端用来告诉服务器能接受什么编码格式,包括字符编码、压缩方式等

例如:Accept-Encoding:gzip, deflate

3.Accept-Language 作用:浏览器客户端用来告诉服务器能接受什么语言。

例如:Accept-Language:zh-CN,zh;q=0.9

4.Connection 作用:客户端或服务端用来告诉对方当前tcp连接的状态,默认为keep-alive,即长连接。

例如:Connection:close 在响应结束后关闭连接

5.Host 作用:指定要请求的资源所在的主机和端口,通常从url里获取。这个字段是必需的。

例如:我们在地址栏输入:http://www.baidu.com   Host:www.baidu.com

6.Referer 作用:浏览器客户端用来告诉服务器这个请求是从哪个页面链接过来的,即请求来源。

7.User-Agent 作用:告诉服务器,客户端使用的操作系统、浏览器版本和名称

例如:Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.181 Safari/537.36

另外,有些属性不一定会有但比较常见:

1.Cache-Control 作用:客户端浏览器用来判断是否需要用本地缓存。默认值为private;常用值有private、no-cache、max-age、must-revalidate。具体场景举例:

a.打开新窗口时值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。而如果指定了max-age值(单位为秒),那么在此值内的时间里就不会重新访问服务器,例如:

Cache-control: max-age=5(表示当访问此网页后的5秒内再次访问不会去服务器)

b.在地址栏回车

值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。

值为no-cache,那么每次都会访问。

值为max-age,则在过期之前不会重复访问。

c.按后退按扭

值为private、must-revalidate、max-age,则不会重访问,

值为no-cache,则每次都重复访问

d.按刷新按扭

无论为何值,都会重复访问

2.Cookie  作用:客户端浏览器用来存储一些用户信息以便让服务器辨别用户身份的(大多数需要登录的网站上面会比较常见),比如用户名和密码,sessionId等。

3.If-Modify-Since 作用:把浏览器端缓存页面的最后修改时间(精确到秒)发送到服务器去,服务器会把这个时间与服务器上实际文件的最后修改时间进行对比。如果时间一致,那么返回304,客户端就直接使用本地缓存文件。如果时间不一致,就会返回200和新的文件内容以及新的修改时间(Last-Modify)。客户端接到之后,会丢弃旧文件,把新文件缓存起来,并显示在浏览器中。

例如:Wed, 30 May 2018 08:32:42 GMT

4.If-None-Match 作用:If-None-Match和ETag一起工作,工作原理是在HTTP Response中添加ETag信息。 当用户再次请求该资源时,将在HTTP Request 中加入If-None-Match信息(ETag的值)。如果服务器验证资源的ETag没有改变(该资源没有更新),将返回一个304状态告诉客户端使用本地缓存文件。否则将返回200状态和新的资源和Etag.  使用这样的机制将提高网站的性能。

例如: If-None-Match: W/"3119-1437038474000"

注意:If-Modify-Since和If-None-Match都可以给服务器用来判断所请求的文件距离上次访问之间是否被修改过,不过If-Modify-Since只能精确到秒,而If-None-Match只要文件修改过就会变化。

Etag的使用场景:1.有些文件需要频繁更新,但是文件内容并没有变化。

2.同一文件存储在多台web服务器中,用户请求在多台之间轮询。

posted @ 2018-05-30 20:30  鹿丸不会多项式  阅读(1582)  评论(0编辑  收藏  举报