HTTP
报文结构是怎样的
对于 TCP 而言,在传输的时候分为两个部分:TCP头和数据部分。
而 HTTP 类似,也是header + body
的结构,具体而言:
起始行 + 头部 + 空行 + 实体
由于 http
请求报文
和响应报文
是有一定区别,因此我们分开介绍。
起始行
对于请求报文来说,起始行类似下面这样:
GET /home HTTP/1.1
也就是方法 + 路径 + http
版本。
对于响应报文来说,起始行一般张这个样:
HTTP/1.1 200 OK
响应报文的起始行也叫做状态行
。由http
版本、状态码和原因三部分组成。
值得注意的是,在起始行中,每两个部分之间用空格隔开,最后一个部分后面应该接一个换行,严格遵循ABNF
语法规范。
头部
分两种:
① 请求行 + 请求头 + 空行
② 状态行 + 响应头 + 空行
两种头部字段的格式都是:
字段名不区分大小写
字段名不允许出现空格,不可以出现下划线_
字段名后面必须紧接着:
空行
用来区分头部和实体。
要是在头部故意加个空行会怎样?
空行后面的内容都会被看成实体。
实体
具体数据,body
部分。请求报文对应请求体,响应报文对应响应体。