http协议就不多介绍了,项目中碰到了get和post请求在处理参数上的不同,涉及到content-type,就学习总结了下。
一、特点
HTTP协议的主要特点可概括如下:
1.支持客户/服务器模式。
2.简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。每种方法规定了客户与服务器联系的类型不同。由于HTTP协议简单,使得HTTP服务器的程序规模小,因而通信速度很快。
3.灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
4.无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
5.无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
二、http协议请求
请求头request分为三部分:请求行、消息报头、请求正文。
(1)请求
下面这张图是源请求头

第一行:
POST:请求方法,还有GET 、PUT、DELETE、HEAD、OPTIONS、TRACE等。
/api/user/v2/sendPasscode/activity :这是请求的url
HTTP/1.1:是请求的协议及版本
第二行:
Host:被请求资源的域名和端口号,任何请求都会有。
第三行:
Connection: keep-alive , 开启HTTP持久连接,HTTP 1.1默认值
Connection: close , 关闭HTTP持久连接,HTTP 1.0默认值
详细解读参考:https://www.jianshu.com/p/eba76cfc0424
第四行:
Content-length:HTTP传输实体长度
详细解读参考:https://blog.csdn.net/gerryzhu/article/details/50419019
第五行:
Accept:用于指定客户端希望接受哪些类型的信息
这里有一点疑惑是为什么最后有 */ *还需要前面的application/json,text/plain。查了一下,有说法是优先级的排序。但是看mdn的解释,权重因子q才表示优先级,没有q的话,q默认为1。
详细参考:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Accept
第六行:
Origin:请求来自于哪个站点,仅仅包括协议和域名。存在于CORS跨域请求或POST请求。
这个字段主要涉及到跨域问题,详细参考
http://www.ruanyifeng.com/blog/2016/04/cors.html
第七行:
User-Agent:用户代理
通常格式
Mozilla/5.0 (平台) 引擎版本 浏览器版本号
第八行:
Content-type:发送端发送的实体数据的数据类型
常见的4种Content-type:
- application/x-www-form-urlencoded
- multipart/form-data
- application/json
- application/xml
详细参考:常见的4中POST数据类型
https://imququ.com/post/four-ways-to-post-data-in-http.html
最初是因为封装axios时处理post请求参数时,搜到这篇博客,才想到要看一遍http。
第九行:
Referer:告诉服务器是从哪个页面链接过来的
详细参考
https://blog.csdn.net/shenqueying/article/details/79426884
后面的:
Accept-Encoding:声明浏览器支持的编码类型
Accept-Language: 声明浏览器支持的语言
Cookie:不多说了
(2)响应
响应报文也由三部分组成:响应行、响应头、响应体。具体不写了,可以搜下。
状态码:这个博客也很多,常用的要记住。
https://blog.csdn.net/woshihaiyong168/article/details/52438839
网友评论