http和https,常见状态码,get和post的区别以及缓存机制

一、HTTP和HTTPS的基本概念

HTTP:超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最广泛的一种网络协议,是一个客户端向服务端请求和答应的标准(TCP),用于WWW服务器传输超文本到本地浏览器的传输协议,他可以使浏览器更加高效,使网络传输减少。

HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全办,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容内容就是SSL。

HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

二、HTTP和HTTPS的区别

1.https协议主要到ca申请整数,一般免费整数很少,需要交费。
2.http是超文本传输协议,信息是明文传输,https则是具有安全性的ssl加密传输协议。
3.http和https使用的事完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4.http的连接很简单,是无状态的;https协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全

三、前端常用状态码

类别原因短语
1xxInformational(信息性状态码)接受的请求正在处理
2xxSuccess(成功状态码)请求正常处理完毕
3xxRedirection(重定向)需要进行附加操作以完成请求
4xxClient error(客户端错误)客户端请求出错,服务器无法处理请求
5xxServer Error(服务器错误)服务器处理请求出错

四、get/post

GET

请求的数据会附在URL之后(就是把数据放置在HTTP协议头中),以?分割URL和传参数据,多个参数用&连接;
get就是获取数据

POST提交

把提交的数据放置在HTTP包的包体中。GET
提交的数据会在地址栏中显示,而POSt提交,地址栏不会改变
post就是修改数据

区别:
1.传输数据的大小:首先声明:HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。而在实际开发中存在的限制主要有:

GET:特定浏览器和服务器对URL长度有限制,例如 IE对URL长度的限制是2083字节(2K+35)。
对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。
因此对于GET提交时,传输数据就会受到URL长度的限制。

POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制,Apache、IIS6都有各自的配置。

2.安全性
POST的安全性要比GET的安全性高。比如:通过GET提交数据,用户名和密码将明文出现在URL上,因为(1)登录页面有可能被浏览器缓存;(2)其他人查看浏览器的历史纪录,那么别人就可以拿到你的账号和密码了,除此之外,使用GET提交数据还可能会造成Cross-site request forgery攻击

五、HTTP缓存机制

http缓存分为强缓存和协商缓存

强缓存
Cache-Control (低版本浏览器用的是Expires,了解即可)

是最重要的规则。常见的取值有private、public、no-cache、max-age,no-store,默认为private。

private: 客户端可以缓存

public: 客户端和代理服务器都可缓存(前端的同学,可以认为public和private是一样的)

max-age=xxx: 缓存的内容将在 xxx 秒后失效

no-cache: 需要使用对比缓存来验证缓存数据

no-store: 所有内容都不会缓存,强制缓存,对比缓存都不会触发(对于前端开发来说,缓存越多越好,so…基本上和它说886)

协商缓存(对比缓存)
他用的不是时效时间max-age

第一次请求的时候,返回给客户端数据和缓存的信息,也就是一个特定的缓存标识

客户端把这个缓存标识放到缓存数据库

再次请求时 客户端先把缓存标识也一起发给服务端,进行对比

客户端将备份的缓存标识发送给服务器,服务器根据缓存标识进行判断,判断成功后,返回304状态码,通知客户端比较成功,可以使用缓存数据。

分为两种缓存标识

Etag (唯一标识)优先级更高

Last-Modified/If-Modified-Since 返回给客户端最后这个资源的修改时间,优先级没有Etag高

对比缓存标识生效不生效时,状态码200,服务端返回body和header

在对比缓存标识生效时,状态码为304,并且报文大小和请求时间大大减少。

原因是,服务端在进行标识比较后,只返回header部分,通过状态码通知客户端使用缓存,不再需要将报文主体部分返回给客户端。

缓存总结
强制缓存的优先级更高,如果没失效,就直接用缓存数据库里的东西

如果时间已经失效了,就看用的是哪种标识(Etag服务端生成的唯一标识,还是last-modified资源最后修改时间标识)返回304就用缓存里的,返回200就返回body和新的header

一般来说,无论如何都会协商缓存,浏览器必备的缓存不可能没有~

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值