HTTP报文:用于HTTP协议交互的信息,客户端的HTTP报文叫做 请求报文,响应端的叫做 响应报文

本质:是由多行(用CR+LF作换行符)数据构成的字符串文本

  注:CR:回车,打印针回到行首   LF:换行,打印针移至下一行

构成:报文首部、报文主体

  报文首部:服务器端或客户端需处理的请求或响应的内容及属性

  报文主体:应被发送的数据

请求报文(上)  响应报文(下)

请求行:请求的方法、请求URI、HTTP版本

状态行:响应结果状态码、原因短语、HTTP版本

首部字段:表示请求和响应的各种条件和属性的各类首部,一般有四种(见图)

其他:包含HTTP的RFC里未定义的首部(Cookie等)

HTTP中的编码

HTTP中可以直接传输数据,也可以编码后进行传输,编码的方法可以有效地处理大量的访问请求,但是编码过程需要计算机来完成,因此会消耗更多的CPU等资源

  报文:HTTP通信中的基本单位,由8位组字节流组成,通过HTTP通信传输

  实体:作为请求或响应的有效载荷数据(补充项)被传输,其内容由实体首部和实体主体组成

  报文的主体用于传输请求或响应的实体主体,通常,报文主体等于实体主体,只有当传输中进行编码操作时,实体主体的内容发生变化,才导致它和报文主体产生差异

HTTP中的内容编码可以保持实体信息原样进行压缩,内容编码后的实体由客户端接收并负责解码

  常用的内容编码:gzip   compress  deflate  identity(不进行编码)

  传输编码机制:在通信时按某种编码方式传输,但只定义 作用于分块传输编码中

  分块传输编码:传输大容量数据时,通过把数据分割成多块,能够让浏览器逐步显示页面

  邮件中的MIME机制:多用途因特网邮件扩展,支持发送多种类型的文件,如邮件,文本,图片,视频等,因为使用一种称为多部分对象集合的方法

  多部分对象集合:HTTP中也采用了多部分集合,发送的一份报文主体内可含有多类型实体,其中包含的对象如下:

  multipart/form-data:在web表单文件上传时使用

  multipart/byteranges:状态码206(部分内容),响应报文包含了多个范围的内容时使用

HTTP获取部分内容请求 

在请求头部加上Range划定请求范围

  例如:Range:bytes=5001-10000     5001-10000字节

     Range:bytes=5001-               5001至后面全部的字节

     Range:bytes=-3000,5000-7000      一开始到3000字节和5000到7000字节

返回状态码的206响应报文,若服务器无法响应范围请求,则会返回状态码200 OK和完整的实体内容

HTTP内容协商

同一个web网站有可能会有多份内容相同的页面,比如英语版和中文版,当浏览器的默认语言为英语或中文,访问相同的URI的web页面时会显示对应的英语版或中文版页面,这样的机制称为 内容协商

判断基准:响应资源的语言、字符集、编码方式等

首部字段:Accept

       Accept-Charset

     Accept-Encoding

     Accept-Language

     Content-Language

内容协商的技术:

    服务器驱动协商:由服务器端进行内容筛选

    客户端驱动协商:由客户端进行内容筛选,用户从可选列表中手动选择,也可利用Javascript进行选择

    透明协商:由服务器端和客户端各自进行内容协商

最新文章

  1. [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型、视图、控制器、路由等的基本操作
  2. python取mysql数据写入excel
  3. 线性代数和numpy——黑板客老师课程学习
  4. Ajax与DOM实现动态加载
  5. Visual Studio: How to change ipch path in Visual Studio 2010 (.sdf, *.opensdf, ...)
  6. oracle查看所有表的数据量并排序
  7. ruby -- 进阶学习(十)自定义路由中:new, :collection和:member的区别
  8. SQLSERVER执行计划详解
  9. 在WPF程序中使用摄像头兼谈如何使用AForge.NET控件(转)
  10. ios开发——实用技术篇Swift篇&播放MP3
  11. java Runtime类
  12. Python字典详解
  13. H2 Database Engine
  14. 文件 "c:\Program Files\Microsoft SQL Server\MSSQL10.SQLEXPRESS\MSSQL\DATA\ttt.mdf" 已压缩,但未驻留在只读数据库或文件组中。必须将此文件解压缩。 CREATE DATABASE 失败。无法创建列出的某些文件名。请查看相关错误。 (.Net SqlClient Data Provider)
  15. 【】tensorflow学习笔记
  16. Linux 小知识翻译 - 「架构 续」(arch)
  17. Apache目录结构解释
  18. JS控制音频顺序播放
  19. UE4如何检测目标在锥形视野内
  20. 17个CSS知识点整理

热门文章

  1. ResNet入门
  2. JavaScript 实现留言框
  3. 【 【henuacm2016级暑期训练】动态规划专题 G】 Palindrome pairs
  4. 获取ip,判断用户所在城市
  5. 今天开始看看brpc-baidurpc
  6. QQ在线人数统计图数据解析
  7. CoreData 从入门到精通(四)并发操作
  8. 不仅仅是Google,您必须知道的全球十大地图API
  9. ES API 备忘
  10. 3.多线程传参,以及tuple数组