Http协议的格式及实例
Http协议位于网络五层结构的最上层应用层。它建立在TCP协议之上,是个无状态的协议,典型的应用是网络浏览器以及移动端数据传输。本文将介绍Http请求的格式,并对请求数据的各部分做一个详细介绍。
Http协议包括多个方法:Get,Post,Put,Delete,Head,Patch,Options等。我们重点关注最常用的Get和Post请求。
一次请求包括两个过程,Request过程和Response过程,Request过程发出数据请求,携带请求的各项参数,Response过程返回请求的数据。
Http Request
Http Request包括三部分:请求行,请求头和请求体。
第一行是请求行,格式是:方法+路径+Http版本,以空格分隔。从第二行开始是请求头,由若干个键值对构成,每个键值对一行。请求头结束后空一行,接着是请求体。
POST请求的参数放在请求体里,GET请求没有请求体,请求的参数以键值对的形式存放在path里面。请求头里的键值对包括预定义键值对和自定义键值对,键值对内容包括请求的Host,User-agent,编码方式,请求体的类型,请求体的长度,分隔符等等信息,大部分都是可选的,我们也可以随意添加自定义的键值对来满足某些需求。下面是一个Post请求的实例:
Http Response
Http Response也包括三部分:响应状态行,响应头和响应体。
第一行是响应状态行包括Http版本+响应状态,以空格分隔。从第二行开始是响应头,包含若干个键值对,每个键值对占一行。后面空一行,接着是响应体。
请求体可以包括多个part,通过header里面的分隔符分隔,比如音频上传时利用请求体里两个part分布存储文件类型和音频数据。
User-agent键值对
Http Request Header里有个user-agent字段,是用来存放发起请求的客户端或者浏览器的标识信息的,比如浏览器的名称版本,操作系统的名称版本,客户端的名称版本等。
浏览器的user-agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5) AppleWebKit/537.36 (<