第 8 天:弄懂 HTTP 请求报文

以前觉得 HTTP 请求报文很难理解,直到系统看完了 RFC2616 和《HTTP权威指南》相关章节,发现原来并没有那么难理解。

你可以把 HTTP 请求报文看成一段「有格式」的文本,它描述了「我要干什么,我提供了哪些有用的信息」。这个类似于我们平时打电话,要知道对方的电话号码,以及要沟通的事情。我觉得 request 就是干了一件沟通的事情。

它的内容也比较简单,我们看一张图,内容我是从网上随便抓的。

第 8 天:弄懂 HTTP 请求报文

第 8 天:弄懂 HTTP 请求报文

请求报文由三部分组成:

1.请求行(request line)

基本语法:Method 空格 Request-URI 空格 HTTP版本 换行。比如:

POST /bauhinia/v1/class/purchase/info HTTP/1.1。HTTP 中常用的方法就是 GET 和 POST,主要的作用是要执行什么事件。

2.请求头(request header)

请求头会分多种:

<1>.通用Header(request 和 response 都可以使用)

Cache-Control:
Connection:
Date:
Pragma:
Trailer:
Transfer-Encoding:
Upgrade:
Via:
Warning:

<2>.请求Header(只有请求使用,携带关于请求和客户端的额为信息供服务端使用)

Accept:
Accept-Charset:
Accept-Encoding:
Accept-Language:
Authorization:
Expect:
From:
Host:
If-Match:
If-Modified-Since:
If-None-Match:
If-Range:
Max-Forwards
Proxy-Authorization:
Range:
Referer:
TE:
User-Agent:

<3>.实体Header(关于 body 的附加信息)

Allow:

Content-Encoding:

Content-Language:
Content-Length : 表示请求体的长度;
Content-Location :
Content-MD5:
Content-Range :
Content-Type: 表示请求体的内容类型;
Expires:
Last-Modified:

3.请求体(body)

POST 方法会携带请求体,通过 key=value 的形式把不同的值使用&拼接起来。

总结

关于 request 报文信息主要由三部分组成,请求行、请求头和请求体,其中请求头内容比较多,更详细的内容可以查看 RFC2616 文档,有非常详细的描述。另外在请求头中也可以定义自己的信息,一般会放网络请求的通用参数供服务端使用。在网络请求的过程中,会把请求报文通过 TCP 传输到服务端。下一节内容我们学习响应报文的内容。大家加油!!!

今天打卡指令:

1.谈一谈你都用过哪些 Header?你能说出上面 Header 的作用吗?

2.response报文与request报文有什么不同?


推荐阅读:

第 8 天:弄懂 HTTP 请求报文