http报文包括起始行、首部和主体。

    HTTP请求/响应起始行

请求组成: 方法 + 请求URL + HTTP版本

响应组成: HTTP版本 + 数字状态码 + 描述状态的原因短语

   HTTP首部

首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。首部和方法配合工作,共同决定了客户端和服务器能做什么。

通用首部

客户端和服务器都可以使用的首部

首部

描述

Connection

是否需要持久连接

Keep-alive

Cache-

Control

缓存控制

private:内容只缓存到私有缓存中(仅客户端);

public:所有内容都将被缓存(客户端和代理服务器都可缓存);

max-age= 25 :缓存将在25s后失效,需要重新访问服务器;

no-cache:必须先与服务器确认返回的响应是否被更改,然后才能使用该响应来满足后续对同一个网址的请求,验证ETag;

no-store:响应不被缓存;

must-revalidation/proxy-revalidation:如果缓存的内容失效,请求必须发送到服务器/代理以进行重新验证

Data

首部字段data表明创建HTTP报文和日期。

Via

追踪客户端与服务器之间的请求响应和响应报文的传输途径。还可以避免请求回环的发生。

Warning

告知用户一些与缓存相关问题的警告

Transfer-

Encoding:

规定了传输报文主体时采用的编码方式

请求首部中常用字段详解

首部

描述

Accept

客户端支持的媒体类型

"text/html,iamge/*"

Accept-Encoding

客户端支持的编码方式

"gzip, compress"

Accept-Charset

客户端支持的/字符集

"iso8859-5"

Accept-Language

客户端支持的语言

"en, fr"

Except

If - Modified - Since

浏览器缓存页面的最后修改时间,服务器会将该时间与服务器时间对比,如果超出该时间则返回新内容,否则返回304

Time

Range

如果服务器支持请求的范围,则返回资源的指定范围

Range

Content - Length

请求消息正文的长度

Referer

包含一个URL,用户从该URL代表的页面出发访问当前请求的页面

url

User - Agent

浏览器类型

Trailer

首部字段Trailer会事先说明在报文主体后记录了哪些首部字段,可以应用在HTTP1.1版本分块传输编码时使用。

响应首部中常用字段详解

首部

描述

Accecpt-Ranges      "none"

服务器可接受的范围和类型

Age

从原始服务器到代理缓存形成的估算时间(以秒记, 非负)

ETag

设置文件是否被修改

Last-Modified

请求资源的最后修改时间

Serve

服务器应用程序的名称

Set-cookie

设置cookie

Proxy-Authenticate

代理对客户端的质询列表

Basic

实体首部中常用字段详解

首部

描述

Content-encoding

主体编码方式

Content-Language

主体语言

Content-Length

主体长度

Content-MD5

主体MD5校验和

Content-Range

在整个资源中,实体表示的字节范围

Content-type

主体对象类型

MD5:一种散列函数,用以提供消息的完整性保护。MD5即Message-Digest Algorithm 5(信息摘要算法5),是计算机广泛使用的散列算法之一(又译摘要算法、哈希算法)。对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。用于确保信息传输完整一致。

最新文章

  1. 有吧友需要PDF的下载站点,好吧,我这边汇总一下
  2. http流请求时,被请求站点HttpContext.Current为null?
  3. CTF中那些脑洞大开的加密(1)
  4. RFC-2068-http
  5. 数据库主键跟外键+修改mysql的密码
  6. 使用AppCan自带的升级功能实现移动端升级
  7. struts2访问servlet API
  8. Linux - SSH - Password-less login - generate public key - migrate data without password between two VM servers
  9. C---数组名作函数参数
  10. SQL SERVER中强制类型转换cast和convert的区别
  11. Nested weights are bad for performance
  12. [ABP开源项目]--vue+vuex+vue-router+EF的权限管理系统
  13. php链式调用(链式操作)
  14. iOS UI-自动布局(Autoresizing)
  15. mysql新手进阶01
  16. 剑指offer 面试58题
  17. 20169219《linux内核原理与分析》第七周作业
  18. 2018年EMUI系统能力分论坛来啦
  19. [Xcode 实际操作]九、实用进阶-(1)隐藏顶部的状态栏
  20. 黑马程序员----java基础:多线程

热门文章

  1. SpringBoot学习笔记(3):静态资源处理
  2. Kattis - fairdivision 【贪心】
  3. swift 全局常量 && 全局变量的写法
  4. [原创]关于在CentOS 7.0 下 安装nfs ,遇见 Transaction check error问题的解决
  5. 什么是DDOS攻击?怎么防御?
  6. LINQ 学习路程 -- 查询操作 ThenBy & ThenByDescending
  7. 各种IoC框架下实现AOP
  8. AIM Tech Round 3 (Div. 2) A , B , C
  9. Cocos2d-x中手动构造Json::Value
  10. Ueditor--toolbars