声明:本文是本人学习的总结与笔记,文字资料来源于网易云课堂
HTTP:
一句话简介:客户端和服务器的交互机制以及所涉及的规范
HTTP协议详解:
1.协议的产生(作用)
客户端根据用户输入的地址信息请求服务器,服务器在接受到用户请求后进行处理,然后将处理结果响应到客户端,客户端将响应结果展示
关键字:
请求:将数据发送给服务器的过程
响应:将请求的处理结果发送给浏览器的过程
发送请求的 浏览器不同所以导致发送数据的传输格式不同,但是服务器并不关心浏览器的差异,那么不同版本的浏览器和不同版本的服务器进行数据交互时,就必须遵守一套相同的格式,为了解决这个问题,就出现了HTTP协议. 总结 :HTTP的作用就是规范浏览器 和 服务器 数据交互的格式
2.概念
HTTP:超文本传输协议(Hyper Text Transfer Protocol)
特点:
简单快速,客户向服务器请求服务时,只需传送请求方法和路径.请求方法常用的有:GET,HEAD,POST.每种方法规定了客户与服务器联系的类型.http发送数据的格式基于键值对
灵活,http允许传输任意类型的数据对象,不同类型的数据使用Content-Type属性加以区分
无连接,限制每次连接只处理一个请求,服务器处理完请求,并接收到客户的应答后,即断开连接.这样做,节省了传输时间.但是同时也浪费了资源,因为大多数情况下,当前请求处理完成后,客户端会立即再发送下一次请求,此时又需要再次建立连接,不过http1.1版本后可以支持可持续连接
无状态,无状态指协议对事物处理是没有记忆能力的,只规定了数据的传输格式,不关注数据是什么.HTTP是不会为了下一次连接而维护这次连接所传输的信息,这是为了保证服务器内存. 比如客户获得一张网页之后关闭浏览器,然后再一次启动浏览器,再登陆该网站,但是服务器并不知道客户关闭了一次浏览器. 缺少状态意味着如果后续处理需要前面的信息,则它必须重传
建立链接--->客户端发送请求(遵循HTTP协议)--->服务器处理请求并发送响应(遵循HTTP协议)--->关闭链接
以上整个的步骤 称为HTTP消息
3.HTTP 请求格式
1).请求的结构(键值对格式)
请求头:请求方式(GET,POST等),请求的地址和HTTP协议版本
请求行:说明客户端要使用的附加信息,没有用户的个人信息
空行:位于请求行和请求数据中间,空行是必须的
请求数据
(请求行,请求头的叫法顺序不一,明白背后代表的意义就好)
请求头举例:
GET https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=0&rsv_idx=1&tn=baidu&wd=http%E8%AF%B7%E6%B1%82%E4%BD%93%E6%9C%89%E5%93%AA%E4%BA%9B&rsv_pq=d99857fe0005b845&rsv_t=cb850GQJ1l2sbaZcfkUNDpxKzu5HaIzKXFFjln2W3KoTlAVcbXS83vJqTMc&rqlang=cn&rsv_enter=1&rsv_sug3=32&rsv_sug1=36&rsv_sug7=101 HTTP/1.1
Host: www.baidu.com
Connection: keep-alive
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: BAIDUID=62BF3FD39B99E1C1E09A2DCCBD06047B:FG=1; BIDUPSID=62BF3FD39B99E1C1E09A2DCCBD06047B; PSTM=1530629421; BD_UPN=12314353; BDORZ=B490B5EBF6F3CD402E515D22BCDA1598; ispeed_lsm=2; H_PS_PSSID=1437_21123_26810; BD_CK_SAM=1; PSINO=1; BD_HOME=0; H_PS_645EC=e271zsj86QRu6v%2BWp4xPjSXg0MeBr03EMXiwVRi%2BkP3G7cnsRW3d7cMEevg
详细意义,不再一一说明
4.请求方法
HTTP1.0定义了三种请求方法:GET POST HEAD HTTP1.1又新增OPTIONS PUT DELETE TRACE CONNECT五种方法
这里只介绍最常用的GET 和POST
请求的方法不是浏览器决定的而是在代码中决定的
GET和POST请求方式区别简单介绍:(更多详细会在之后 请求与响应 专栏更新)
get:请求指定的页面信息,请求数据会以?的形式隔开并拼接在请求头中,不安全,而浏览器对UPL的长度有限制,所以get请求不能携带大量的数据
post:向指定资源提交数据进行处理请求.数据被包含在请求体中发送,在UPL中看不到具体的请求数据,安全,而且适合数据量大的数据传输
5.响应格式
1).
响应行(状态行):HTTP版本,状态码,状态消息
响应头:消息报头,客户端使用的附加信息
空行:必须
响应体:服务器返回给浏览器的信息
代码界的小学生,联系QQ:1012200678 WX:CYM9700 期待各位的交流~