《HTTP 权威指南》笔记:第三章 HTTP 报文
如果说 HTTP 是因特网的信使,那么 HTTP 报文就是它用来搬东西的包了.
这一章讲述关于 HTTP 报文的相关知识,包括:
- HTTP 报文的三个组成部分
- 请求报文以及其各种功能
- 响应报文以及各种状态码
- HTTP 首部
报文的三个组成部分
报文有三个组成部分:
- 「起始行」start line:对报文进行描述
- 「首部」header: 包含 attributes (属性)
- 「主体」body: 包含内容,是可选的.
需要注意:
- 在 start line 和 header 中,格式为 ASCII 文本,
- start line 中以{CRLF}这个行终止符作为结束,中间各项用空格分开.
- 在 header 中,可有包含多个或者没有首部,格式为:{name:}(一个可选的空格){value}{CRLF}
- 在 body 中,格式为二进制数据,或者为空.
请求报文以及其各种功能
请求报文的格式:
<method> <request-URL> <version>
<headers>
<entity-body>
其中:
method 为 HTTP 的「方法」,是请求行的开头,用于告知服务器做些什么.
version 为 HTTP 的「版本」,格式为: HTTP/<major>.<minor>,(分别为主要版本号和次要版本号)
HTTP 的方法
常见的 HTTP 的方法有:
- GET:从服务器中得到一份文档
- HEAD:从服务器中获取文档的 header
- PUT: 将请求的 body 部分放到服务器上
- POST: 向服务器发送需要处理的数据
- TRACE: 对经过代理服务器的报文进行跟踪
- OPTIONS:决定可以在服务器上可供使用的方法
- DELETE: 从服务器中删除一份文档
下面介绍其中的 3、4、5 三种方法
③PUT 方法
定义:与 GET 方法相反, PUT 方法会向服务器写入文档.
功能:让服务器用请求的主体部分创建一个由所请求的 URL 命名的新文档.
④POST 方法
定义:与PUT 方法向服务器中存储数据有区别,POST 方法向服务器发送数据.
功能:支持 HTML 中的表单,接受表单中的信息.
⑤TRACE 方法
定义:在响应报文中携带它收到的原始请求报文
功能:在客户端发起请求的时候,可能会穿过防火墙、网关、代理等等,因此可能修改原始的 HTTP 请求,因此,可通过 TRACE 方法观察请求报文是否被破坏或者修改.
注意:返回的 TRACE 报文不包含 body
响应报文以及状态码
响应报文的格式:
<version> <status> <reason-phrase>
<headers>
<entity-body>
其中:
- status-code: 「状态码」,其中第一位数字都用来描述状态的一般类别(“成功”,“出错”)
- reason-phrase: 「原因短语」,数字状态码的可读版本,不会被机器所处理,只对人类有意义.
status-value 的种类
- 100~199:信息型状态码
- 200~299:成功
- 300~399:重定向
- 400~499: 客户端错误
- 500~599: 服务器错误
HTTP 首部
HTTP 首部字段向请求报文和响应报文中添加了一些附加信息,本质上来说,它们只是一些名/值对的列表
首部的类型包括:
- 通用首部:可出现在请求报文中,也可出现在响应报文中,例如:
Date: Tue, 30ct, 1997 02:16:03 GMT
- 请求首部
- 响应首部
- 实体首部:描述主体的长度和内容,或者资源自身,例如:
Content-lenghth: 15040
注意:
如果值的内容会超过一行,那么就应该使用 Tab 键分为多行提高可读性,规则:多出的每行前面至少有一个空格或者 Tab
请求首部
定义:请求报文特有,用于说明是谁、什么在发送给请求、客户端的喜好和能力
功能:为服务器提供一些额外信息
例如:客户端希望得到什么类型的数据:Accept: */*
种类:
1. 信息型首部
2. Accept 首部
3. 安全请求首部
4. 条件请求首部
响应首部
定义:响应报文特有,为客户端提供一些额外的信息.比如告知客户端在与那一版本服务器进行交互: Server: Tiki-Hut/1.0
种类:
- 信息型首部
- 协商首部
- 安全响应首部
《HTTP 权威指南》笔记:第三章 HTTP 报文的更多相关文章
- 【HTTP权威指南】第三章-HTTP报文
HTTP是因特网的信使,报文就是信使运送的包裹. 这一章包含: 报文如何流动 报文的三个组成部分(起始行,首部,实体的主体部分) 请求报文和响应报文的区别 请求报文支持的各种功能(方法) 响应报文返回 ...
- HTML5权威指南之—第三章
HTML页面上元素的焦点能够通过"tab"键在各个元素之间切换,使用"tabindex"属性能够改变默认的转移顺序 Tabindex为1的元素会首先被选中.然后 ...
- css 权威指南笔记(三)结合css和XHTML
link rel stylesheet alternate stylesheet(候选样式表) title type media all screen print ..... 内联样式
- Struts2权威指南笔记
Struts2权威指南笔记 1.mvc特点包括: ① 多个视图可以对应一个模型 ② 模型返回的数据与显示逻辑分离 ③ 应用层被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性 ④ 控制层的概念也 ...
- Android群英传笔记——第三章:Android控件架构与自定义控件讲解
Android群英传笔记--第三章:Android控件架构与自定义控件讲解 真的很久没有更新博客了,三四天了吧,搬家干嘛的,心累,事件又很紧,抽时间把第三章大致的看完了,当然,我还是有一点View的基 ...
- 《DOM Scripting》学习笔记-——第三章 DOM
<Dom Scripting>学习笔记 第三章 DOM 本章内容: 1.节点的概念. 2.四个DOM方法:getElementById, getElementsByTagName, get ...
- 《Linux内核设计与分析》第六周读书笔记——第三章
<Linux内核设计与实现>第六周读书笔记——第三章 20135301张忻估算学习时间:共2.5小时读书:2.0代码:0作业:0博客:0.5实际学习时间:共3.0小时读书:2.0代码:0作 ...
- spring boot 笔记--第三章
spring boot 笔记 第三章,使用Spring boot 构建系统: 强烈建议支持依赖管理的构建系统,Maven或Gradle 依赖管理: Spring Boot的每版本都会提供它支持的依赖列 ...
- The Road to learn React书籍学习笔记(第三章)
The Road to learn React书籍学习笔记(第三章) 代码详情 声明周期方法 通过之前的学习,可以了解到ES6 类组件中的生命周期方法 constructor() 和 render() ...
随机推荐
- mysql读写分离[高可用]
顾名思义, 在mysql负载均衡中有多种方式, 本人愚钝,只了解驱动中间件和mysql_proxy两种方式, 对于驱动,利用的是ReplicationDriver,具体请看远哥的这篇文章: MySQL ...
- 在用网站ICP备案主体变更导致网站无法访问问题解决
关于ICP备案: 备案的目的:是为了防止在网上从事非法的网站经营活动,打击不良互联网信息的传播,如果网站不备案的话,很有可能被查处以后关停.非经营性网站自主备案是不收任何手续费的,所以建议大家可以自行 ...
- Magnum Kubernetes源码分析(二)
Kubernetes Master Stack kubernetes master的stack的resources主要分为三个部分. master wait handle wait handle主要用 ...
- topcoder srm 694 div1 -3
1.给出$n$个数字,将其分成三个非空的组,每组的权值为该组所有数字的抑或.选择一种分法使得三组的权值和最大? 思路:记录前两组的权值且三组有没有数字时第三组的值.(当前两组的值知道时第三组的权值是确 ...
- 0-1背包dp|波动数列|2014年蓝桥杯A组10-fishers
标题:波动数列 观察这个数列: 1 3 0 2 -1 1 -2 ... 这个数列中后一项总是比前一项增加2或者减少3. 栋栋对这种数列很好奇,他想知道长度为 n 和为 s 而且后一项总是比前一项增加a ...
- LightOJ 1027 A Dangerous Maze(期望)题解
题意:n扇门,每扇门后都有一个值x,如果x<0会让你等待-x再重新回到这里选择门,x>0你经过x时间就会被传送走,问你被传送走的期望 思路:假设被传送走的期望为E,那么对于x<0来说 ...
- Python 编码规范 PEP8
1 Introduction Guido 的核心思想是:对于代码而言,相比于写,它更多是被用来读的.这个指导旨在使Python代码更易读,且具有更强的协调性. 2 A Foolish Consiste ...
- 17秋 SDN课程 第四次上机作业
1.建立以下拓扑,并连接上ODL控制器. 2.利用ODL下发流表,使得h3在10s内ping不通h1,10s后恢复. 3.借助Postman通过ODL的北向接口下发流表,再利用ODL北向接口查看已下发 ...
- 02:httpd-2.2基础配置
---恢复内容开始--- 9.日志设定 错误日志: ErrorLog logs/error_log //这里使用了相对路径,相对于/etc/httpd/路径 LogLevel warn //定义日志 ...
- window下的Django入门
一.window下新建安装(参考书籍:<python编程:从入门到实践>) 新建一个文件夹 learning_log ,在终端中切换到该目录下,并创建一个虚拟工作环境,运行模块 venv ...