http状态码与https的区别

91 阅读7分钟
  • http的常见状态码有哪些,代表什么含义

    • 状态码

      状态码含义
      1xxHTTP协议中定义的一组信息性状态码,用于表示请求的处理状态或者向客户端传递一些额外的信息。1xx 的状态被浏览器 HTTP 库直接处理掉了,不会让上层应用知晓。
      200请求成功。服务器成功处理了请求并返回了请求的资源。
      204无内容。服务器成功处理了请求,但没有返回任何内容。
      301永久重定向。请求的资源已被永久移动到新位置,将来的请求应使用新的URL。
      302临时重定向。通常用于暂时将请求的资源移动到另一个位置。
      400错误的请求。服务器无法理解客户端发送的请求,通常是由于语法错误或无效参数导致的。
      401未授权。请求要求身份验证,但客户端未提供有效的身份凭证。
      403禁止访问。服务器拒绝了客户端的请求,通常是由于客户端的身份认证有效,但没有访问权限。
      404未找到。服务器无法找到请求的资源。
      500服务器内部错误。服务器在处理请求时发生了意外的错误。
      502网管错误。作为代理或网关的服务器从上游服务器接收到无效的响应。
      503由于超载,请求超时或停机维护,服务器目前无法使用,一段时间后可恢复正常,服务端暂时性错误,可以一会再试。
    • 常见http请求方法

      请求方式描述
      POST向服务器新增数据
      GET从服务器获取数据
      DELETE删除服务器上的数据
      PUT更新服务器上的数据 (侧重于完整更新:例如更新用户的完整信息)
      PATCH更新服务器上的数据(侧重于部分更新:例如只更新用户的手机号)
  • http中如何实现缓存机制

    • 缓存控制头:使用HTTP头字段来控制缓存行为
  • Cache-Control是一个通用的缓存机制控制字段,可以在响应头中设置,用于指定缓存的行为。public:表示响应可以被任意缓存(包括客户端和代理服务器)缓存。private:表示响应只能被客户端缓存,中间的代理服务器不能缓存。max-age:指定资源的最大缓存时间,以秒为单位。no-cache:表示不直接使用缓存的副本,而是需要向服务器发送请求验证资源是否过期。no-store:表示不缓存任何响应内容。
    Expires服务器可以通过在响应头中设置Expires字段来指定资源的过期时间。浏览器会在过期时间之前直接使用缓存,不再向服务器发送请求。
    ETag、If-None-MatchETag是服务器为每个资源生成的唯一标识符。服务器在响应头中添加ETag字段,客户端在下一次请求时可以在请求头中添加If-None-Match字段,将上次获取资源的ETag值发送给服务器。如果资源的ETag值与服务器上的ETag值匹配,服务器会返回状态码304 Not Modified,客户端可以直接使用缓存。
    Last-Modified、If-Modified-Since服务器在响应头中可以添加Last-Modified字段,表示资源的最后修改时间。客户端在下一次请求时,可以在请求头中添加If-Modified-Since字段,将上次获取资源的Last-Modified值发送给服务器。如果资源在服务器上没有发生修改,服务器会返回状态码304 Not Modified,客户端可以直接使用缓存。
    • http缓存可分为强缓存和协商缓存

      • 强缓存: 直接使用客户端缓存,不从服务器拉取新资源,也不验证缓存资源是否过期。返回的状态码为200

      • 协商缓存: 通过服务器验证资源有效性,资源有效则返回304,资源失效则返回最新的资源文件

        image.png

  • http和https的区别

    • HTTP(Hypertext Transfer Protocol)是一种用于传输超文本的协议,它是在计算机网络中进行通信的基础。

    • HTTPS(Hypertext Transfer Protocol Secure)是基于HTTP的加密协议,用于保护网络通信的安全性

    • 区别:

      HTTPHTTPS
      安全性明文传输,数据在传输过程中容易被窃取和篡改。通过使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议对数据进行加密和认证,提供了更高的安全性。
      端口号默认使用端口号80进行通信。默认使用端口号443进行通信。
      证书不需要证书验证,任何人都可以发送HTTP请求。需要服务器端使用数字证书来进行身份验证,确保客户端与服务器的通信是安全的。证书由可信的第三方机构颁发,用于验证服务器的身份和加密通信。
      加密方式不对传输的数据进行加密。使用SSL/TLS协议对传输的数据进行加密,确保数据的机密性。
      性能需要进行加密和解密的操作,相比HTTP会略微增加计算资源的消耗,因此传输速度可能稍慢一些。
      SEO在搜索引擎中的排名更高,提供了更安全的用户体验。
  • https如何保证证书是可信赖的? 如何进行身份认证的?

    • HTTPS通过使用数字证书来确保服务器的身份和通信的安全性。数字证书是由可信的第三方机构(称为证书颁发机构或CA)签发的,用于验证服务器的身份并加密通信。

      • 服务器生成密钥对:服务器首先生成一对密钥,包括一个私钥和一个公钥。私钥用于对通信进行加密,而公钥用于解密通信。
      • 证书签发请求:服务器将其公钥和其他身份信息发送给证书颁发机构,请求签发证书。
      • 身份验证:证书颁发机构对服务器的身份进行验证,确保其合法性和真实性。身份验证的方式可以包括域名验证、组织验证和个人验证等。
      • 证书签发:一旦服务器的身份得到验证,证书颁发机构会使用自己的私钥对服务器的公钥和身份信息进行签名,生成数字证书。
      • 证书颁发:证书颁发机构将签名后的数字证书发送给服务器。
      • 客户端验证:当客户端与服务器建立HTTPS连接时,服务器会将自己的数字证书发送给客户端。客户端会验证证书的合法性和真实性。
      • CA根证书验证:客户端会使用自带的受信任的CA根证书(内置于操作系统或浏览器中)来验证服务器的数字证书。如果证书的签名可以被根证书验证通过,那么证书就被认为是可信赖的。
      • 加密通信:一旦证书验证通过,客户端和服务器之间的通信将使用公钥加密和私钥解密进行,确保通信的安全性。
    • 注意:数字证书有一个有效期限,通常为一年或更长。在证书过期之前,服务器需要重新向证书颁发机构申请并获取新的数字证书。

    • 总结:HTTPS通过使用由可信的第三方机构签发的数字证书,对服务器的身份进行验证,并使用公钥加密和私钥解密通信,以确保通信的安全性和可信度。