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服务器中,用户请求在多台之间轮询。

HTTP请求报文属性详解的更多相关文章

  1. fiddler请求报文的headers属性详解

    fiddler请求报文的headers属性详解 headers的属性包含以下几部分. (1)Cache头域 在Cache头域中,通常会出现以下属性. 1. Cache-Control 用来指定Resp ...

  2. fiddler响应报文的headers属性详解

    fiddler响应报文的headers属性详解 (1)Cache头域 1. Cache-Control 在请求报文已经说过了,用于设置缓存的属性,浏览内容不被缓存. 2. Data 生成消息的具体时间 ...

  3. OutputCache属性详解(一)一Duration、VaryByParam

    目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...

  4. OutputCache属性详解(二)一 Location

    目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...

  5. OutputCache属性详解(三)— VaryByHeader,VaryByCustom

    目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...

  6. OutputCache属性详解(四)— SqlDependency

    目录 OutputCache概念学习 OutputCache属性详解(一) OutputCache属性详解(二) OutputCache属性详解(三) OutputCache属性详解(四)— SqlD ...

  7. HTML video 视频标签全属性详解

    HTML 5 video 视频标签全属性详解   现在如果要在页面中使用video标签,需要考虑三种情况,支持Ogg Theora或者VP8(如果这玩意儿没出事的话)的(Opera.Mozilla.C ...

  8. Linux文件权限与属性详解 之 su & sudo

    Linux文件权限与属性详解 之 一般权限 Linux文件权限与属性详解 之 ACL Linux文件权限与属性详解 之 SUID.SGID & SBIT Linux文件权限与属性详解 之 ch ...

  9. Android开发–Intent-filter属性详解

    Android开发–Intent-filter属性详解 2011年05月09日 ⁄ Andriod ⁄ 暂无评论 ⁄ 被围观 1,396 views+ 如果一个 Intent 请求在一片数据上执行一个 ...

随机推荐

  1. Codeforces 801 A.Vicious Keyboard & Jxnu Group Programming Ladder Tournament 2017江西师大新生赛 L1-2.叶神的字符串

    A. Vicious Keyboard time limit per test 2 seconds memory limit per test 256 megabytes input standard ...

  2. scrapy模拟请求头

    import random USER_AGENT_LIST=[ 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, lik ...

  3. BigDecimal不整除异常

    通过BigDecimal的divide方法进行除法时当不整除,出现无限循环小数时,就会抛异常的 异   常 :java.lang.ArithmeticException: Non-terminatin ...

  4. sshkey改变后出错的解决

    错误态 ssh 192.168.111.200 出现如下错误 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING ...

  5. 【kmp算法】hdu4763 Theme Section

    kmp中next数组的含义是:next[i]表示对于s[0]~s[i-1]这个前缀而言,最大相等的前后缀的长度是多少.规定next[0]=-1. 迭代for(int i=next[i];i!=-1;i ...

  6. 【动态规划】bzoj1270 [BeijingWc2008]雷涛的小猫

    暴力dp是n^2*m的……我们计算每棵树在每层的答案的时候,都需要计算出从那棵树转移过来最优. 但是我们发现,对一棵树而言,从上面转移过来都是一样的,所以我们可以在计算每棵树在每层的答案的时候,先预处 ...

  7. 权限管理-RBAC

    (一)RBAC 通过用户与角色关联,角色与操作的关联实现用户与操作的关联 (二)权限细分 (三)数据库设计 (四)程序设计 (五)权限与应用程序 (1)应用URL实现程序权限控制 (2)应用code实 ...

  8. Nginx用为缓存服务器

    Nginx 缓存组成 共享内存 数据定位 存储键和缓存对象的元数据 磁盘空间: 存储数据   nginx做为反向代理时,能够将来自upstream的响应缓存至本地,并在后续的客户端请求同样内容时直接从 ...

  9. Swift,枚举

    枚举类型判断 1.设置并利用枚举 enum Weacher{ case a case b case c } var d=Weacher.b switch d{ case .a: print(" ...

  10. C#断点续传

    我们经常使用下载工具,如bit精灵.迅雷.FlashGet,这些软件都支持断点续传. 断点续传即下载任务暂停后可以继续,而无需重新下载,即下载时需要通知服务器的起始位置.如果允许多线程进行分片下载,必 ...