http协议
http请求基本原理:
客户端向服务端发起请求时,会生成一段请求报文,请求报文由请求方法,请求的URL,协议版本、请求头和内容实体5部分组成。
服务器接收到请求后会响应请求端,返回响应报文,响应报文组成为5部分:协议版本、状态码、解释状态码 的解释语句、响应头、以及响应实体。
http请求缺点及cookie的改进作用:
http请求不做持久化状态管理。也就是说,请求发出后,响应结束整个过程就结束了,再次请求时,经过的流程与上一次一样,服务器不会记得上次是什么时候请求过或者是谁请求过,此时,如果我们想要记得之前我们的请过历史,进行状态管理,就可以使用cookie来协助服务器进行状态管理。如果没有cookie,由于http不保存请求状态,那么,每一次打开新网页都需要用户去登录,cookie可以通过响应报文中的set-cookie字段来通知客户端自动保存cookie,下次请求时会自动发送cookie,服务器会对比数据得到状态结果,下次请求时,请求端会带上cookie让服务器验证,服务器验证成功后,知道是验证过的请求方,避免了服务器再次生成cookie和对响应报文加入cookie的环节。
GET请求与POST请求的异同点:
主要差别有五个,分别为:
安全性:GET请求都包含在URL中,而且会被浏览器保存历史浏览记录,POST请求不会,但是在抓包的时候同样可以被抓到;
数据长度:GET请求参数会包含在URL中,但是URL有长度限制,URL长度限制多少字符是有各个浏览器控制的,长度的限制会影响GET传参请求;
缓存:GET请求能缓存数据,而POST请求不能缓存;
数据量:POST请求可以通过请求的内容实体传输更多的信息,而GET请求数据量有限;
数据、编码类型:POST请求不限制数据类型,支持更多的编码类型。
请求状态码:
共有5类状态码类型。
1xx 表示请求正在处理中;
2xx 请求正常处理且处理成功
200 从客户端发送的请求被正确处理
204 请求成功,但请求的内容不含响应实体部分
206 进行范围请求
3xx 请求重定向
301 永久性重定向,表示资源已经被分配了新的URL
302 临时重定向,表示资源被临时性的分配到新的URL
303 资源存在着另外一个URL,应该使用新的URL定向获取资源
文档规定,浏览器对303状态码的处理跟原来http 1.0中处理302的方式一样,对307的处理则跟原来在http 1.0中对302的描述一样。
总结:303和307的状态码出现是由于POST请求的非幂等属性造成的。可以说,303和307是302的详细划分
304 服务端通过cookie判断出客户端已发送过相同的请求,当前资源与上次请求时的资源相同
4xx 客户端错误
400 请求报文存在着语法错误
401 请求需要携带http验证信息,当前请求未通过验证,多为未登录
403 请求被服务器拒绝
404 在服务器上没有找到请求的资源
5xx 服务器错误
500 服务器在执行请求时发生了错误
503 服务器超荷载或处于停机维护状态,无法处理请求
http请求报文和响应报文通用头部:
cache-control: 缓存管理
no-cache 客户端不缓存过期资源
no-store 不进行缓存
max-age 如果资源缓存时间比指定时间小,客户端就接受缓存,且服务器不对资源有效性进行再次确认
connection: 控制连接
close 服务器明确断开连接
keep-alive 保持持久连接
upgrade :
建立一个完全不同的通信协议
HTTPS:
https是HTTP协议建立在SSL/TLS上的安全协议,相比于HTTP,由于HTTPS多了SSL/TLS的握手和加密解密过程,性能上比HTTP差,但是目前已经可以通过特有硬件加速处理了。