以前觉得 HTTP 请求报文很难理解,直到系统看完了 RFC2616 和《HTTP权威指南》相关章节,发现原来并没有那么难理解。
你可以把 HTTP 请求报文看成一段「有格式」的文本,它描述了「我要干什么,我提供了哪些有用的信息」。这个类似于我们平时打电话,要知道对方的电话号码,以及要沟通的事情。我觉得 request 就是干了一件沟通的事情。
它的内容也比较简单,我们看一张图,内容我是从网上随便抓的。
请求报文由三部分组成:
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报文有什么不同?
推荐阅读: