标签:面试题 缓存 HTTP 请求 GET 响应 http POST
一句话概述HTTP:
-
HTTP通常跑在
TCP/IP协议栈
之上 -
依靠
IP协议实现寻址和路由
-
TCP协议实现可靠数据传输
-
DNS协议实现域名查找
-
SSL/TLS协议实现安全通信
HTTP特点:
-
一种请求/响应模式的协议
-
允许传输任意类型的数据对象,文本、图片、音频等,传输的类型由Content-Type标记
-
无状态,HTTP请求不具备保存之前发送过的请求或响应的功能,每一次请求都是独立无关的
HTTP缺点:
-
文明传输(不加密),内容可能被窃听(报文不使用二进制数据,而是文本形式)
-
无法验证报文的完整性,内容可能被篡改(接收方没有办法确认对方发送过来的数据在中间有没有被篡改)
-
不验证通信方的身份,有可能遭遇伪装(服务器只要收到了请求就会返回一个响应)
-
无状态,不能保存之前发送过的请求或响应的功能
-
队头阻塞 (HTTP是基于 请求-响应 的模型,在同一个TCP长连接中,前一个请求没有得到响应,后面的请求就会被阻塞。HTTP/2中的多路复用解决了这个问题)
HTTP请求方法:
-
GET: 获取资源 (幂等)
-
POST: 创建或更新资源(非幂等)
-
PUT: 创建或更新资源本身(幂等)
-
PATCH: 对资源进行局部更新(非幂等)
-
DELETE: 删除资源 (幂等)
GET和POST的区别:
-
从缓存的角度上说,GET会被浏览器主动缓存下来,但是POST不会;
-
从参数的角度上说,GET一般放在URL上传递参数,大小有限制;POST可以放在请求体里,大小本质上无限制;
-
从幂等的角度上说,GET是幂等的,而POST不是;
-
不过据我了解的,其实GET和POST本质上都是TCP连接;
HTTP状态码:
2xx:
200
:请求成功,通常返回的数据中带有响应体
3xx:
301
:永久重定向,最新的URI为响应报文首部的 Location
字段。浏览器默认会做缓存
302:临时重定向,浏览器不做缓存;
303:临时重定向,明确表示客户端应该使用GET方法获取资源;
307: 临时重定向
,请求方法和实体都不允许变动
304:表示请求的资源在服务器上并未发送改变,告诉请求者可以使用缓存;
4xx:
400
:请求报文中存在语法错误。例如 JSON字符串用 null 当做key
401
:用户认证失败。
403
:请求资源被拒绝,原因是:比如法律禁止、信息敏感。
404
:请求资源未找到,表示没在服务器上找到相应的资源。
501:
请求的功能还不支持
503
:服务器内部处于超负载状态或进行停机
HTTP中的幂等:
一个方法是不是幂等,其实就是判断一个方法重复执行多次,产生的效果是不是一样的,如果是幂等的话,它本质上意味着成功执行请求的结果和它的执行次数无关。只有「POST」和「PATCH」是非幂等的,其它都是幂等操作
标签:面试题,缓存,HTTP,请求,GET,响应,http,POST 来源: https://www.cnblogs.com/vs1435/p/13094775.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。