Http与Https

一、简介:
  1. http:超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的应用层协议。HTTP是万维网的数据通信的基础。
  2. https:HTTPS (全称:Hypertext Transfer Protocol Secure),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。
二、http状态码:
  1. 常见状态码

状态码

含义

200 OK

服务器响应成功

301 Moved Permanently

代表的是永久性的重定向。这种重定向跳转,从严格意义来讲不是服务器跳转,而是客户端跳转的。这个“跳”的动作是服务器是通过回传状态码301来下达给客户端的,让客户端完成跳转。

302 Move Temporarily

代表临时跳转,当服务器返回状态码302,表示这个请求跳转了,而且这个跳转是临时的重定向,这个重定向不是永久性的,有可能在经过几天后就变了,重定向到另外一个URL地址上了。

304 Not Modified

服务器通过返回状态码304可以告诉客户端请求资源成功,但是这个资源不是由服务器提供返回给客户端的,而是客户端本地浏览器缓存中就有的这个资源,因为可以从缓存中获取这个资源,从而节省传输的开销。

400 Bad Request

语义有误,当前请求无法被服务器理解。除非进行修改,否则客户端不应该重复提交这个请求

请求参数有误。

401 Unauthorized

当前请求需要用户验证。该响应必须包含一个适用于被请求资源的 WWW-Authenticate 信息头用以询问用户信息。客户端可以重复提交一个包含恰当的 Authorization 头信息的请求。如果当前请求已经包含了 Authorization 证书,那么401响应代表着服务器验证已经拒绝了那些证书。如果401响应包含了与前一个响应相同的身份验证询问,且浏览器已经至少尝试了一次验证,那么浏览器应当向用户展示响应中包含的实体信息,因为这个实体信息中可能包含了相关诊断信息。

403 Forbidden

状态码403代表请求的服务器资源权限不够,服务器已经理解请求,但是拒绝执行它。也就是说,没有权限去访问服务器的资源,或者请求的IP地址被封掉了。

404 Not Found

状态码404代表服务器上没有该资源,或者说服务器找不到客户端请求的资源。

500 Internal Server Error

代表程序错误,也就是说请求的网页程序本身报错了。在服务器端的网页程序出错。由于现在的浏览器都会对状态码500做一定的处理,所以在一般情况下会返回一个定制的错误页面。

502 Bad Gateway

作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。

三、http缓存机制:

HTTP 缓存机制是一种在 Web 开发中常用的技术,它旨在提高性能和减少网络流量。通过缓存,可以避免不必要的网络请求,减少服务器负载,并加快页面加载速度。

  1. 缓存规则:

为方便理解,可以认为浏览器存在一个缓存数据库,用于存储缓存信息。

在客户端第一次请求数据时,此时缓存数据库中没有对应的缓存数据,需要请求服务器,服务器返回后,将数据存储至缓存数据库中。如下图:

缓存规则主要分为强制缓存、对比缓存两大类:

强制缓存:已存在缓存数据,且强制缓存生效时,客户端不需要再与服务端发生交互。

对比缓存:已存在缓存数据,不论对比缓存是否生效,都需要与服务端发生交互。

两类缓存规则可以同时存在,强制缓存优先级高于对比缓存,也就是说,当执行强制缓存的规则时,如果缓存生效,直接使用缓存,不再执行对比缓存规则。

  1. 缓存类型:

1、强制缓存(Expires/Cache-Control)

强制缓存在缓存数据未失效的情况下(即Cache-Control的max-age没有过期或者Expires的缓存时间没有过期),那么就会直接使用浏览器的缓存数据,不会再向服务器发送任何请求。强制缓存生效时,http状态码为200。这种方式页面的加载速度是最快的,性能也是很好的,但是在这期间,如果服务器端的资源修改了,页面上是拿不到的,因为它不会再向服务器发请求了。

这也就解释了有时我们会遇到在开发过程中,有时对代码进行了一些样式修改,页面刷新并没有效果的原因。

与强制换窜相关的header头属性:Pragma、Cache-Control、Expires

header属性

可选值

优先级

优缺点

Pragma(HTTP/1.0)

no-cache:不直接使用缓存,根据新鲜度来使用缓存

  1. 响应头不支持这个属性
  2. 为了兼容HTTP/1.0的客户端
  3. 在Http1.1中已被废弃

Cache-Control(HTTP/1.1)

  1. no-cache:不直接使用缓存,根据新鲜度来使用缓存
  2. no-store:不使用缓存,每次都是请求下载新资源
  3. max-age:xx秒,缓存时长
  4. public/private:是否只能被单个用户使用,默认为private
  5. must-revalidate:每次访问需要缓存校验

  1. 请求头和响应头都支持这个属性
  2. 不适用于HTTP/1.0
  3. 在缓存未失效前,获取不到修改后的资源

Expires(HTTP/1.0+)

GMT时间

  1. 服务器和客户端的时间不一致会出问题
  2. 适用于HTTP/1.0
  3. 在缓存未失效前,获取不到修改后的资源

在没有缓存数据的时候,浏览器向服务器请求数据时,服务器会将数据和缓存规则一并返回,缓存规则信息包含在响应header中。

对于强制缓存来说,响应header中会有两个字段来标明失效规则(Expires/Cache-Control)
使用chrome的开发者工具,可以很明显的看到对于强制缓存生效时,网络请求的情况。

Expires

Expires的值为服务端返回的到期时间,即下一次请求时,请求时间小于服务端返回的到期时间,直接使用缓存数据。
不过Expires 是HTTP 1.0的东西,现在默认浏览器均默认使用HTTP 1.1,所以它的作用基本忽略。
另一个问题是,到期时间是由服务端生成的,但是客户端时间可能跟服务端时间有误差,这就会导致缓存命中的误差。
所以HTTP 1.1 的版本,使用Cache-Control替代。

Cache-Control

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

可选值

说明

public

所有内容都将被缓存(客户端和代理服务器都可缓存),在响应头中设置

private

通知浏览器只针对单个用户缓存响应. 且可以具体指定某个字段.如private –“username”,内容只被缓存到私有缓存中(),在响应头中设置。

no-cache

  1. 请求头中:告诉浏览器回去服务器取数据,并验证你的缓存(如果有的话)。
  2. 响应头中:告诉浏览器,一定要回服务器校验,不管有没有缓存数据。 如果确定没有被改,可以使用缓存中的数据

no-store

所有内容都不会被缓存或Internet临时文件中,在响应头中设置

max-age

缓存的内容将在xxx秒后失效,这个选项只在HTTP1.1中可用,和Last-Modifide一起使用时优先级较高,在响应头中设置

must-revalidation/proxy-revalidation

如果缓存的内容失效,请求必须发送到服务器/代理器进行重新验证,在请求头中设置

2、对比缓存

对比缓存,顾名思义,需要进行比较判断是否可以使用缓存。
浏览器第一次请求数据时,服务器会将缓存标识与数据一起返回给客户端,客户端将二者备份至缓存数据库中。
再次请求数据时,客户端将备份的缓存标识发送给服务器,服务器根据缓存标识进行判断,判断成功后,返回304状态码,通知客户端比较成功,可以使用缓存数据。

  • 第一次请求

  • 第二次请求

通过两图的对比,我们可以很清楚的发现,在对比缓存生效时,状态码为304,并且报文大小和请求时间大大减少。
原因是,服务端在进行标识比较后,只返回header部分,通过状态码通知客户端使用缓存,不再需要将报文主体部分返回给客户端。

对于对比缓存来说,主要通过缓存标识进行比较,它在请求header和响应header之间进行传递,共有两种:

1)Last-Modified / If-Modified-Since

  • Last-Modified:服务器在响应请求时,告诉浏览器资源的最后修改时间。

  • If-Modified-Since:

再次请求服务器时,通过此字段通知服务器上次请求时,服务器返回的资源最后修改时间。
服务器收到请求后发现有头If-Modified-Since 则与被请求资源的最后修改时间进行比对。
若资源的最后修改时间大于If-Modified-Since,说明资源又被改动过,则响应整片资源内容,返回状态码200;
若资源的最后修改时间小于或等于If-Modified-Since,说明资源无新修改,则响应HTTP 304,告知浏览器继续使用所保存的cache。

2)Etag / If-None-Match(优先级高于Last-Modified / If-Modified-Since)

  • Etag:
    服务器响应请求时,告诉浏览器当前资源在服务器的唯一标识(生成规则由服务器决定)。

  • If-None-Match:
    再次请求服务器时,通过此字段通知服务器客户段缓存数据的唯一标识。
    服务器收到请求后发现有头If-None-Match 则与被请求资源的唯一标识进行比对,
    不同,说明资源又被改动过,则响应整片资源内容,返回状态码200;
    相同,说明资源无新修改,则响应HTTP 304,告知浏览器继续使用所保存的cache。

缓存位置:
●浏览器缓存:现代 Web 浏览器会自动缓存资源,包括页面、脚本、样式表和图像等。
●代理服务器缓存:代理服务器可以缓存经过它的请求和响应,以减少对源服务器的访问。

缓存机制在 HTTP 协议中起着重要的作用,可以显著提高 Web 应用程序的性能和响应速度。开发者应该合理利用缓存机制,并根据资源的特性和业务需求来设置适当的缓存策略和控制标头,以实现更好的用户体验和网络效率。
四、http和https的区别:
1、HTTPS协议需要到CA申请证书,一般免费的证书比较少,因而需要一定费用。
2、HTTP是超文本传输协议,信息是明文传输,HTTPS则是具有安全性的SSL加密传输协议。
3、HTTP和HTTPS使用的是完全不同的链接方式,用的端口也不一样,前者是80端口,后者是443端口。
4、HTTP的链接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比HTTP协议安全。
五、https如何保证证书是可信赖的:
HTTPS协议通过加密和身份验证来确保数据的完整性和真实性。在HTTPS协议中,主要有两种保证数据完整性和真实性的机制:SSL/TLS协议和数字证书。
首先是SSL/TLS协议。当客户端发出HTTPS请求时,服务器将使用SSL/TLS协议与客户端建立安全通道,这个过程称为握手。在握手期间,SSL/TLS协议会使用公钥加密技术来加密数据。公钥加密技术使用一对密钥,一个是公钥,一个是私钥。公钥可以公开,私钥必须保存在服务器上。客户端发送请求时,服务器将公钥发送给客户端,客户端使用公钥加密数据,再发送给服务器。因为只有服务器拥有私钥,所以只有服务器才能解密数据。这样就能保证数据的完整性和真实性。
其次是数字证书。数字证书是一种由CA(Certificate Authority)发布的电子文件,用于证明服务器身份的合法性。数字证书包含服务器公钥信息和所有者身份信息等内容。客户端在与服务器建立连接时会向CA验证证书的合法性。如果证书无效,就会提示用户不安全。一旦证书验证通过,客户端就可以使用该证书中包含的公钥来加密数据,并发送给服务器。由于证书只由信任的第三方机构颁发,所以攻击者无法伪造证书,进而窃取用户数据。
最后,HTTPS还采用了完整性保护机制,即对每个传输的数据块进行哈希,并将哈希值发送到接收方。接收方使用相同的方法计算哈希值,并将其与发送方发送的哈希值进行比较,以确保数据的完整性和真实性。如果哈希值匹配,则数据是安全的。
HTTPS通过使用SSL/TLS协议、数字证书和完整性保护机制等多种技术手段来确保数据传输的安全。HTTPS安全锁在浏览器地址栏中出现,表示当前页面已启用HTTPS协议,数据传输是安全的。
六、https如何进行身份验证:
1数字证书的生成:网站所有者必须生成数字证书。这通常是由权威的证书颁发机构(CA,Certificate Authority)完成的。CA是受信任的第三方实体,负责验证网站的身份,并为其签发数字证书。
2身份验证:CA会对网站所有者的身份进行验证,以确保他们具有对要保护的域的控制权。验证通常涉及验证域名的所有权或管理权,以及一些其他的身份验证步骤。
3颁发数字证书:一旦CA验证了网站所有者的身份,他们会签发数字证书。这个数字证书包含了网站的公钥以及其他信息,包括颁发证书的CA的信息。
4数字证书的安装:网站所有者将数字证书安装在其网络服务器上。该证书与私钥一起使用,以加密和解密与网站的通信。
5建立安全连接:当用户访问网站时,服务器将其数字证书发送给用户的浏览器。浏览器会验证证书的有效性,包括检查证书是否由已知和信任的CA签发,是否在有效期内,以及是否与用户正在访问的域匹配。
6信任链:浏览器内置了一组根证书,这些根证书是由受信任的CA签发的。如果服务器的数字证书由受信任的CA签发,浏览器将信任该证书,并建立安全连接。
7密钥交换:一旦浏览器验证了证书的有效性,服务器和浏览器之间将建立一个安全的密钥交换通道,以确保通信的机密性和完整性。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值