HTTP和HTTPS 的理解

两个概念:

  • HTTP:一个基于TCP/IP通信协议来传递数据的协议,传输的数据类型为HTML 文件、图片文件、查询结果等。

  • HTTPS :一般理解为HTTP+SSL/TLS,通过 SSL证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密,简单来说就是HTTP的安全版本。

HTTP

HTTP报文(请求报文和响应报文)结构

General Headers 通用信息头:

既能用于请求消息中,也能用于响应信息中

在这里插入图片描述

  • Request URL:请求的地址
  • Request Method:请求的方法类型
  • Status Code:响应状态码
  • Remote Address:表示远程服务器地址

Response Headers 响应头:

在这里插入图片描述

  • Accept-Ranges: 服务器通过byte serving支持的部分内容范围类型
  • Age :对象在代理缓存中暂存的秒数
  • Alt-Svc :服务器使用"Alt-Svc"(Alternative Servicesde的缩写)头标识资源可以通过不同的网络位置或者不同的网络协议获取
  • Content-Encoding :设置数据使用的编码类型
  • Content-Length:响应体的长度
  • Content-type:返回的响应MIME类型与编码,告诉浏览器它发送的数据属于什么文件类型
  • date:原始服务器消息发出的时间
  • Server:web服务器软件名称
  • Cache-control:指定请求和响应遵循的缓存机制 (重点)
  • Last-Modified:标记请求的资源在服务器端最后被修改的时间 (重点)
  • Expires :设置响应体的过期时间 (重点)
  • ETag :特定版本资源的标识符,通常是消息摘要 (重点)

Request Headers 请求头:

在这里插入图片描述

  • Accept:告诉服务器可以接受的文件格式。根据Accept头的不同,按照相应的顺序进行produces的匹配。
  • Cookie:HTTP请求发送时,会把保存在该请求域名下的所有cookie值一起发送给web服务器
  • Host:指定请求的服务器的域名和端口号
  • Referer:告诉服务器是从哪个网站链接过来的
  • User-Agent :用户代理:简称UA。内容包含发出请求的用户信息,使得服务器能够识别客户端使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、插件等。
  • Authorization :设置HTTP身份验证的凭证
  • Connection:keep-alive 表示是否需要持久连接
  • Cache-Control:指定请求和响应遵循的缓存机制 (重点)
  • If-Modified-Since:设置更新时间,从更新时间到服务端接受请求这段时间内如果资源没有改变,允许服务端返回304 Not Modified (重点)
  • If-None-Match:设置客户端ETag,如果和服务端接受请求生成的ETage相同,允许服务端返回304 Not Modified (重点)

更多请求头和响应头属性参考:Http消息头中常用的请求头和响应头

常见请求方法:

  • GET:请求指定的页面信息,并返回实体主体。
  • POST:向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。
  • HEAD:类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头。
  • PUT:从客户端向服务器传送的数据取代指定的文档的内容。
  • DELETE:请求服务器删除指定的页面。

getpost的区别:

  • get请求报文包括请求行、请求头,而post请求报文还包括请求体body,像登录时的账号密码就会添加在body中

响应状态码:

规则如下,

  • 1xx:指示信息–表示请求已接收,继续处理。
  • 2xx:成功–表示请求已被成功接收、理解、接受。
  • 3xx:重定向–为完成请求,客户需进一步细化请求。
  • 4xx:客户端错误–请求有语法错误或请求无法实现。
  • 5xx:服务器端错误–服务器未能实现合法的请求。

具体如下,

  • 200 ok(请求成功)
  • 204 no content (请求成功,但是没有结果返回)
  • 206 partial content (客户端请求一部分资源,服务端成功响应,返回一范围资源)
  • 301 move permanently (永久性重定向)
  • 302 found (临时性重定向)
  • 303 see other (示由于请求对应的资源存在着另一个 URI,应使用 GET
    方法定向获取请求的资源)
  • 304 not modified (表示在客户端采用带条件的访问某资源时,服务端找到了资源,但是这个请求的条件不符合。跟重定向无关)
  • 307 temporary redirect (跟302一个意思)
  • 400 bad request (请求报文存在语法错误)
  • 401 unauthorized (需要认证(第一次返回)或者认证失败(第二次返回))
  • 403 forbidden (请求被服务器拒绝了)
  • 404 not found (服务器上无法找到请求的资源)
  • 500 internal server error (服务端执行请求时发生了错误)
  • 503 service unavailable (服务器正在超负载或者停机维护,无法处理请求)

特点:

  • http协议支持客户端/服务端模式,也是一种请求/响应模式的协议。
  • 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。请求方法常用的有GET、HEAD、POST。
  • 灵活:HTTP允许传输任意类型的数据对象。传输的类型由Content-Type加以标记
  • 无连接:限制每次连接只处理一个请求。服务器处理完请求,并收到客户的应答后,即断开连接,但是却不利于客户端与服务器保持会话连接,为了弥补这种不足,产生了两项记录http状态的技术,一个叫做Cookie,一个叫做Session。
  • 无状态:无状态是指协议对于事务处理没有记忆,后续处理需要前面的信息,则必须重传。

缺点:

  • 请求信息明文传输,容易被窃听截取。
  • 数据的完整性未校验,容易被篡改。
  • 没有验证对方身份,存在冒充危险。

因此,HTTPS协议便闪亮登场了

HTTPS

两个概念:

  • SSL(Secure Socket Layer,安全套接字层)
  • TLS(Transport Layer Security,传输层安全):其前身是 SSL,目前使用最广泛的是TLS 1.1、TLS 1.2

浏览器在使用HTTPS传输数据的流程:

在这里插入图片描述

  • 首先客户端通过URL访问服务器建立SSL连接。
  • 服务端收到客户端请求后,会将网站支持的证书信息(证书中包含公钥)传送一份给客户端。
  • 客户端的服务器开始协商SSL连接的安全等级,也就是信息加密的等级。
  • 客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。
  • 服务器利用自己的私钥解密出会话密钥。
  • 服务器利用会话密钥加密与客户端之间的通信。

缺点:

  • HTTPS协议多次握手,导致页面的加载时间延长近50%;
  • HTTPS连接缓存不如HTTP高效,会增加数据开销和功耗;
  • 申请SSL证书需要钱,功能越强大的证书费用越高;
  • SSL涉及到的安全算法会消耗 CPU 资源,对服务器资源消耗较大。
总结
  • HTTPS是HTTP协议的安全版本,HTTP协议的数据传输是明文的,是不安全的,HTTPS使用了SSL/TLS协议进行了加密处理。
  • HTTP和HTTPS使用连接方式不同,默认端口也不一样,http是80,https是443
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值