HTTP报文概述
- 起始行 start line
- 首部 header
- 主体 body
URL 语法
URL语法结构
大多数URL都有同样的:"方案://服务器位置/路径"结构。
URL为应用程序提供了一种访问资源的手段。实际上,很多用户可能都不知道他们的浏览器在获取所请求的资源时使用了什么协议和访问方法。
大多数的URL方案的URL语法都建立在由9部分构成的通用格式上:
<scheme>://<user>:<password>@<host>:<port>/path;<param>?<query>#<frag>
URL最重要的三个部分就是:方案(scheme
)、主机(host
)和路径(path
)。
名值对之间用&
隔开。
URL 转义机制
URL的设计者们认识到有时候人们可能会希望URL中包含除通用的安全字母表之外的二进制数据或字符。因此需要有一种转义机制,能够将不安全的字符编码为安全字符,再进行传输。
为了避免安全字符集表示法带来的限制,人们设计了一种编码机制,用来在URL中表示各种不安全的字符。这种编码机制就是通过一种“转义”表示法来表示不安全的字符的,这种转义法包括一个百分号%
,后面跟着两个表示字符ASCII码的十六进制数。
HTTP报文详解
术语
- 元信息 : meta-information
- 流入 : inbound
- 流出 : outbound
- 事物处理 : transaction
- 上游 : upstream
- 下游 : downstream
HTTP 报文组成
HTTP报文是简单的格式化数据块,每天报文都包含来自客户端的请求或一条来自服务器的响应。
包含三部分:
- 起始行
start line
: 对报文进行描述 - 首部
header
: 包含属性 - 主体
body
: 可选的、包含数据的
起始行和首部就是由行分割的ASCII文本,这个行终止符是CRLF
。
HTTP 报文语法
请求报文格式:
<method> <request-URL> <version> 请求起始行
<header> 首部
<entity-body> 主体
响应报文格式:
<version> <status> <reason-phrase> 响应起始行
<header> 首部
<entity-body> 主体
- method : 如GET PUT POST
- request-URL : 请求资源的完整URL
- version : 格式类似
HTTP/<major>.<minor>
- status : 状态码,三位数字描述请求过程中所发生的情况,如200表示OK
- reason-phrase : 原因短语,状态码的可读版本
- header : 首部,可以有0或多个首部,每个首部都包含一个名字,后面跟一个冒号
:
,然后是一个可选的空格,接着是一个值(名值对),最后是一个CRLF
。
首部 header
HTTP首部向请求或响应报文中添加一些附加信息。本质上说,他们只是一些名/值对的列表。
- 通用首部 : 既可以出现在请求报文,也可在响应报文
- 请求首部
- 响应首部
- 实体首部 : 描述主体长度和内容,或资源本身
- 扩展首部 : 规范中未定义的新首部
常见首部实例: