http

作者: 我才是大田田 | 来源:发表于2018-10-31 11:44 被阅读0次

http协议就不多介绍了,项目中碰到了get和post请求在处理参数上的不同,涉及到content-type,就学习总结了下。

一、特点

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

二、http协议请求

请求头request分为三部分:请求行、消息报头、请求正文。

(1)请求

下面这张图是源请求头


image

第一行:
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

相关文章

网友评论

      本文标题:http

      本文链接:https://www.haomeiwen.com/subject/atextqtx.html