HTTP报文用于HTTP协议的信息交互,分为请求报文和响应报文。报文由首部和主体两部分组成,中间使用空行(CR+LF)分隔

1. 报文结构

  1. 报文由首部、空行和实体组成;
  2. 报文中首先是请求行或者状态行,然后是各种首部字段,再就是空行和实体;
  3. 首部包含请求和响应的各种条件和属性,主要分为请求首部、响应首部、通用首部、实体首部和其他,cookie就在未定义的其他首部中。

2. 报文信息

  1. 编码提升传送速率:
  • 由于需要进行编码,会消耗更多的CPU资源;
  • 报文主体和实体主题在编码后不一致,编码后实体主体发生变化;
  • 对实体主体进行内容编码后,可以通过Content-Encoding查看编码类型;
  • 实体主体编码后可以进行分块传输,客户端接收后进行解析,Transfer-Encoding:chunked。
  1. 可以发送多部分实体对象集合,通过首部Content-Type查看信息;
  2. 可以获取资源的内容范围,通过content-range首部;
  3. 服务端和客户端可以通过ACCEPT等首部进行协商,确定返回的内容。

3. 通用首部字段

  1. Cache-Control:控制缓存的行为
  • 浏览器缓存会使用该字段;
  • no-cache: 强制向原服务器再次验证;
  • max-age: 必须,响应的最大值;
  1. Connection:逐跳首部、连接的管理
  • 管理持久连接;
  • 控制不再转发给代理的首部字段;
  1. Date:创建报文的日期时间
  2. Program:报文指令
  3. Trailer:报文末端的首部一览
  • 报文实体后面存在的首部字段,分块传输使用;
  1. Transfer-Encoding:指定报文主体的传输编码方式
  • HTTP/1.1中仅对分块传输有效;
  1. Upgrade:升级为其他协议
  2. Via:代理服务器的相关信息
  3. Warning:错误通知

4. 请求首部字段

  1. Accept:用户代理可处理的媒体类型
  • text/html,application/json
  • 可以使用q指定优先级,1为最大值,如text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8;
  1. Accept-Charset:优先的字符集
  2. Accept-Encoding:优先的内容编码
  • compress、gzip等;
  1. Accept-Language:优先的语言(自然语言)
  • zh-CN,zh;q=0.8,en;q=0.6,la;q=0.4;
  1. Authorization:Web认证信息
  2. Expect:期待服务器的特定行为
  3. From:用户的电子邮箱地址
  4. Host:请求资源所在的服务器
  5. If-Match:比较实体标记(ETag)
  • 与特定资源关联;
  1. If-Modified-Since:比较资源的更新时间
  2. If-None-Match:比较实体标记(与If-Match相反)
  3. If-Range:资源未更新时发送实体Byte的范围请求
  4. If-Unmodified-Since:比较资源的更新时间(与If-Modified-Since相反)
  5. Max-Forwards:最大传输逐跳数
  6. Proxy-Authorization:代理服务器要求客户端的认证信息
  7. Range:实体的字节范围请求
  8. Referer:对请求中的URI的原始获取方
  9. TE:传输编码的优先级
  10. User-Agent:HTTP客户端程序的信息
  • 传递浏览器种类;

5. 响应首部字段

  1. Accept-Ranges:是否接受字节范围请求
  2. Age:推算资源创建经过时间
  3. ETag:资源的匹配信息
  • 每分资源都有对应的ETag值;
  1. Location:令客户端重定向至指定URI
  2. Proxy-Authenticate:代理服务器对客户端的认证信息
  3. Retry-After:对再次发起请求的时机要求
  4. Server:HTTP服务器的安装信息
  5. Vary:代理服务器缓存的管理信息
  6. WWW-Authenticate:服务器对客户端的认证信息

6. 实体首部字段

  1. Allow: 资源可支持的HTTP方法
  2. Content-Encoding: 实体主体使用的编码方式
  3. Content-Language: 实体主体的自然语言
  4. Content-Length: 实体主体的大小(单位:字节)
  5. Content-Location: 替换对应资源的URI
  6. Content-MD5: 实体主体的报文摘要
  7. Content-Range: 实体主体的位置范围
  8. Content-Type: 实体主体的媒体类型
  9. Expires: 实体主体过期的日期时间
  10. Last-Modified: 资源的最后修改日期时间

7. 其他首部字段

  1. 和cookie相关的首部:
  • set-cookie:响应首部,管理使用的cookie,键值对;
  • httponly: js无法获取cookie,防止跨站脚本攻击XSS;
  • cookie:请求首部,服务器接收;
  1. X-Frame-Options:响应首部,可以控制网站内容在其他Web网站的Frame标签内的显示问题,防止点击劫持;
  2. X-XSS-Protection:XSS防护0/1。

HTTP报文学习的更多相关文章

  1. 关于HTTP请求报文和响应报文学习笔记

    超文本传输协议(Hypertext Transfer Protocol,简称HTTP)是应用层的一种通信协议.它是一种请求/响应式的协议,即一个客户端与服务器建立连接后,向服务器发送一个请求;服务器接 ...

  2. 实验:传输层:UDP协议 学习笔记

    一.传输层协议 从之前介绍的网络层协议来看,通信的两端是两台主机,IP数据报首部就标明了这两台主机的IP地址.但是从传输层来看,是发送方主机中的一个进程与接收方主机中的一个进程在交换数据,因此,严格地 ...

  3. VXLAN学习之路-结合VRF在Linux中实践VXLAN网络

    一.概述 近期在在搞网络安全HCIE.CISP的认证的事,顺便将VXLAN技术再次系统的学习一下,学习过程中看到云原生实验室里的一篇文章,就是关于VXLAN在Linux系统中的实践,感觉文章写得很好, ...

  4. HTTP 总结

    一.概念 特性 1. HTTP协议用于客户端和服务端之间的通信 2. 通过请求和响应的交互达成通信 : HTTP协议规定,请求从客户端发出,最后服务器端响应请求并返回,也就是说,肯定是从客户端开始建立 ...

  5. vxlan 协议

    vxlan 协议原理简介 1. vxlan 简介 VXLAN 全称是 Virtual eXtensible Local Area Network,虚拟可扩展的局域网.它是一种 overlay 技术,通 ...

  6. VLAN和VXLAN的区别

    VLAN ·概况 VLAN (Virtual Local Area Network)意为虚拟局域网,是在交换机实现过程中涉及到的概念,由802.1Q标准所定义.由于交换机是工作在链路层的网络设备,连接 ...

  7. OSPF中DR和BDR到底是谁先选举出来的?

    在OSPF的DRBDR选举的过程中,DR的选举依靠的是hello报文,在two-way之后,交互hello报文完成DR/BDR的选举. 那么在每台路由器根据收到的所有hello报文,会构建自己接口的数 ...

  8. VXLAN 基础教程:在 Linux 上配置 VXLAN 网络

    上篇文章结尾提到 Linux 是支持 VXLAN 的,我们可以使用 Linux 搭建基于 VXLAN 的 overlay 网络,以此来加深对 VXLAN 的理解,毕竟光说不练假把式. 1. 点对点的 ...

  9. linux 旁路掉协议栈的处理点

    对于协议栈的发展,目前有三种处理趋势,一种是类似于使用dpdk的方式,然后将协议栈放到用户态来做,做得比较好的一般都是以bsd的协议栈为底子,可以参考的是腾讯开源的的方案,另外一种是,继续放在内核,但 ...

随机推荐

  1. 数据结构实验之二叉树五:层序遍历 (SDUT 3344)

    #include <bits/stdc++.h> using namespace std; struct node { char data; struct node *lc, *rc; } ...

  2. windows游戏编程键盘

    键盘 首先我们来看一下键盘常用消息 键盘的消息处理过程 键盘消息会有击键消息和字符消息 键盘消息的附加参数 wParam:非系统键的虚拟码 lParam: windows常用虚拟键码及对应的按键

  3. NOI2019 游记——一切都是最好的安排

    有幸运有遗憾 一切都是最好的安排. Day-3 临近NOI了,机房都在狂奶某某同学进队稳了 HE省队垫底,THUSC面试都没进 作为一个有自知之明的人 也就指望着能拼进前100,至少也拿个银牌. 心态 ...

  4. ICEM—三分之一风扇

    原视频下载地址:https://yunpan.cn/cSwYBI6sb9vHS  访问密码 9059

  5. docker 部署 .net core

    1.centos安装好sdk2.1,安装好docker,这些基本的操作就不赘述. 2.准备好core项目,版本2.1 3.新建dockerfile文件放到项目发布文件夹里,里面内容如下: FROM m ...

  6. 深入探索REST(2):理解本真的REST架构风格

    文章转载地址:https://www.infoq.cn/article/understanding-restful-style/,如引用请标注文章原地址 引子 在移动互联网.云计算迅猛发展的今天,作为 ...

  7. Flutter实现TabBarView切换页面时每个页面只initState一次

    在  TabBarView  组件中切换页面时,子页面每次均会重新  initState  一次,导致每次都切换页面均会重绘,如下图 如果需要只在第一次进页面  initState  一次,后面再进入 ...

  8. SOCKET原理(转载)

    SOCKET原理 一.套接字(socket)概念 套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元.它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息: ...

  9. CentOS 7.4 发布下载,安全稳定的Linux发行版

    CentOS 7.4 发布了.CentOS 是 RHEL(Red Hat Enterprise Linux)源代码再编译的产物,而且在 RHEL 的基础上修正了不少已知的 Bug ,相对于其他 Lin ...

  10. sql控制流if()、case when then

    tb_user: 1.if (expr1,expr2,expr3) #如果expr1成立,则返回expr2,否则返回expr3示例:select  name, if (sex=1,'男','女')  ...