Categories: 学习笔记

Http复习笔记——报文语法

所有的 HTTP 报文都可以分为两类:请求报文(request message)和响应报文(response message)

报文由三部分组成:对报文进行描述的起始行(start line)、包含属性的首部(header)块,以及可选的、包含数据的主体(body)部分

start line 和 header都是由行分隔的ASCII文本,标准http中以CRLF(换行符和回车符 \n\r)标记结尾。 body则可以是文本和二进制数据,也可以为空。header中标记body的一些信息,例如Content-Type说明body类型,都是MIME类型,Content-Length标记body长度等。

方法(method)
客户端希望服务器对资源执行的动作。是一个单独的词,比如 GET、HEAD 或 POST。

请求 URL(request-URL)
命名了所请求资源,或者 URL 路径组件的完整 URL。如果直接与服务器进行对话,只要 URL 的路径组件是资源的绝对路径,通常就不会有什么问题——服务器可以假定自己是 URL 的主机 / 端口。

版本(version)
报文所使用的 HTTP 版本,其格式看起来是这样的:
HTTP/.
其中主要版本号(major)和次要版本号(minor)都是整数。

状态码(status-code)
这三位数字描述了请求过程中所发生的情况。每个状态码的第一位数字都用于描述状态的一般类别(“成功”、“出错”等)。

原因短语(reason-phrase)
数字状态码的可读版本,包含行终止序列之前的所有文本。

首部(header)
可以有零个或多个首部,每个首部都包含一个名字,后面跟着一个冒号(:),然后是一个可选的空格,接着是一个值,最后是一个 CRLF。首部是由一个空行(CRLF)结束的,表示了首部列表的结束和实体主体部分的开始。有些 HTTP 版本,比如 HTTP/1.1,要求有效的请求或响应报文中必须包含特定的首部。

实体的主体部分(entity-body)
实体的主体部分包含一个由任意数据组成的数据块。并不是所有的报文都包含实体的主体部分,有时,报文只是以一个 CRLF 结束。报文如下:

龚杰洪

Share
Published by
龚杰洪

Recent Posts

GOLANG面试八股文-并发控制

背景 协程A执行过程中需要创建…

1 年 ago

MYSQL面试八股文-常见面试问题和答案整理二

索引B+树的理解和坑 MYSQ…

1 年 ago

MYSQL面试八股文-InnoDB的MVCC实现机制

背景 什么是MVCC? MVC…

1 年 ago

MYSQL面试八股文-索引类型和使用相关总结

什么是索引? 索引是一种用于加…

1 年 ago

MYSQL面试八股文-索引优化之全文索引(解决文本搜索问题)

背景:为什么要有全文索引 在当…

1 年 ago