简述HTTP&HTTPS,GET&POST之间的区别

*整理了网上一些资料,做了个小总结,有不足可指出!

一、HTTP和HTTPS概述

HTTP

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

HTTP协议的版本:HTTP/1.0、HTTP/1.1
在HTTP1.0协议中,客户端与web服务器建立连接后,只能获得一个web资源。
在HTTP1.1协议,允许客户端与web服务器建立连接后,在一个连接上获取多个web资源。

HTTPS

HTTPS(Secure Hypertext Transfer Protocol,安全超文本传输协议):是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL(Secure Sockets Layer),HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。(它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作,并返回网络上传送回的结果。应用了Netscape的完全套接字层(SSL)作为HTTP应用层的子层。)
HTTPS协议的主要作用可以分为两种:一种是建立一个信息安全通道,来保证数据传输的安全;另一种就是确认网站的真实性。

二、HTTP和HTTPS的区别

HTTPS=SSL+HTTP
1、https协议需要到ca申请证书,一般需要付费。
2、http是超文本传输协议,信息是明文传输;https则是具有安全性的ssl加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,http是默认是80,https默认是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。(无状态:是其数据包的发送、传输和接收都是相互独立的。也就是说,打开一个服务器上的网页和你之前打开这个服务器上的网页之间没有任何联系。无连接:是指通信双方都不长久的维持对方的任何信息)

HTTPS的优点 
尽管HTTPS并非绝对安全,掌握根证书的机构、掌握加密算法的组织同样可以进行中间人形式的攻击,但HTTPS仍是现行架构下最安全的解决方案,主要有以下几个好处:
(1)使用HTTPS协议可认证用户和服务器,确保数据发送到正确的客户机和服务器;
(2)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,要比http协议安全,可防止数据在传输过程中不被窃取、改变,确保数据的完整性。
(3)HTTPS是现行架构下最安全的解决方案,虽然不是绝对安全,但它大幅增加了中间人攻击的成本。
(4)谷歌曾在2014年8月份调整搜索引擎算法,并称“比起同等HTTP网站,采用HTTPS加密的网站在搜索结果中的排名将会更高”。

HTTPS的缺点

虽然说HTTPS有很大的优势,但其相对来说,还是存在不足之处的:

(1)HTTPS协议握手阶段比较费时,会使页面的加载时间延长近50%,增加10%到20%的耗电;

(2)HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗,甚至已有的安全措施也会因此而受到影响;

(3)SSL证书需要钱,功能越强大的证书费用越高,个人网站、小网站没有必要一般不会用。

(4)SSL证书通常需要绑定IP,不能在同一IP上绑定多个域名,IPv4资源不可能支撑这个消耗。

三、GET和POST的区别

GET和POST是HTTP协议中的两种发送请求的方法。

HTTP是基于TCP/IP关于数据如何在万维网中如何通信的协议。(HTTP的底层是TCP/IP。所以GET和POST的底层也是TCP/IP,也就是说,GET/POST都是TCP链接。GET和POST能做的事情是一样一样的。你要给GET加上request body,给POST带上url参数,技术上是完全行的通的。)
Get是向服务器发索取数据的一种请求,而Post是向服务器提交数据的一种请求,在FORM(表单)中,Method默认为"GET",实质上,GET和POST只是发送机制不同,并不是一个取一个发!

  • GET产生一个TCP数据包;POST产生两个TCP数据包;(对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据))
  • GET的URL参数可见,POST不可见;(使用GET请求时,参数在URL中显示(就是把数据放置在HTTP协议头中,以?分割URL和传输数据,参数之间以&相连),而POST把提交的参数数据放置在是HTTP包的包体中,不会显示出来)
  • GET请求重点在从服务器上获取资源,而POST请求重点在向服务器发送数据;(对于get方式,服务器端用Request.QueryString获取变量的值,对于post方式,服务器端用Request.Form获取提交的数据)
  • GET体积小(url字节长度每个浏览器不一样),POST可以无限大(根据php.ini 配置文件设定);
    有很多地方是这样描述的 “ GET方式提交的数据最多只能是1024字节,理论上POST没有限制,可传较大量的数据 ” (因为GET是通过URL提交数据,那么GET可提交的数据量就跟URL的长度有直接关系了。实际上,URL不存在参数上限的问题,HTTP协议规范没有对URL长度进行限制。这个限制是特定的浏览器及服务器对它的限制。IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,如Netscape、FireFox等,理论上没有长度限制,其限制取决于操作系统的支持。这是限制是整个URL长度,而不仅仅是参数值数据长度。理论上讲,POST是没有大小限制的,HTTP协议规范也没有进行大小限制。起限制作用的是服务器的处理程序的处理能力。)
  • GET请求只能进行url编码,而POST支持多种编码方式;
  • GET请求会被浏览器主动cache,而POST不会,除非手动设置。
  • GET有缓存,POST没有,所以Get请求需注意缓存问题;
  • GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留;
  • GET比POST速度快;(POST请求包含更多的请求头,所以速度没有GET快)
  • GET在浏览器回退时无害,POST会再次提交请求;
  • 对参数的数据类型,GET只支持ASCII字符,因此向服务器传输中文有可能出现乱码,而POST支持标准字符集,可以正确传递中文字符;

GET方式的安全性较POST方式要差些,包含机密信息的话,建议用POST数据提交方式;
在做数据查询时,建议用GET方式,而在做数据添加、修改或删除时,建议用POST方式。

欢迎指正!

你可能感兴趣的:(计算机网络基础)