前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >HTTP和HTTPS

HTTP和HTTPS

原创
作者头像
全栈开发Dream
修改2021-05-31 10:35:27
修改2021-05-31 10:35:27
4540
举报
文章被收录于专栏:全栈开发Dream

网络基础之HTTP和HTTPS

前言

最近学习了一下HTTP和HTTPS相关的知识,由于内容比较多,这里总结了一下自己经常错的地方

一、HTTP

1.1 定义

MDN这样解释

超文本传输协议(HTTP) 是一个用于传输超媒体文档(例如 HTML)的应用层协议。它是为 Web 浏览器与 Web 服务器之间的通信而设计的,但也可以用于其他目的。HTTP 遵循经典的客户端-服务端模型,客户端打开一个连接以发出请求,然后等待直到收到服务器端响应。HTTP 无状态协议,这意味着服务器不会在两个请求之间保留任何数据(状态)

1.2 特点

  • 全称超文本传输协议
  • 基于TCP/IP通信协议的应用层协议
  • HTTP默认端口号为80
  • 属于无状态协议

注意:无状态的意思就是对事务处理没有记忆能力,比如增删改查等操作,每次浏览器发起请求,都返回同一个响应内容,每一个响应内容都是独立的,前一次请求获取不到上一次请求的内容信息,这个在数据交互场景中是不允许的。

举个栗子:

网站的登录状态、添加商品到购物车、修改用户信息等事务场景,这些都需要在一次操作后把状态记录下来,才能保证浏览器刷新或者点击其他页面时,前面的请求状态都会被记录下来,保证两个页面的关联交互。

1.3 请求方式

方式

描述

GET

请求指定的页面信息,并返回实体主体。

POST

向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST 请求可能会导致新的资源的建立或已有资源的修改。

区别:

  • 缓存 ---- GET 请求可被缓存,而POST不会被缓存
  • 可见性 ---- GET的请求数据在 URL 中对所有人都是可见的,而POST请求数据不会显示在 URL 中。
  • 历史 ---- GET 请求保留在浏览器历史记录中,而POST不会被保存到浏览器记录中
  • 浏览器书签 ---- GET 请求可被收藏为书签,而POST不能被收藏为书签
  • 数据长度 ---- GET 请求有长度限制,而POST请求对数据长度没有限制
  • 安全性 ---- GET 相比POST不安全

1.4 HTTP1.0、HTTP1.1的区别

  • HTTP1.1相比HTTP1.0节约带宽
  • 缓存处理的不同 在HTTP1.0中主要使用header里的If-Modified-Since,Expires来做为缓存判断的标准. 在HTTP1.1中则引入了更多的缓存控制策略例如Entity tag,If-Unmodified-Since, If-Match, If-None-Match等更多可供选择的缓存头来控制缓存策略。
  • 连接方式的不同以及请求的流水线处理 HTTP1.0支持短暂连接,每次浏览器发送请求需要建立TCP连接,等到服务器完成请求后再断开连接,而且服务器不跟踪和记录过去的请求。 HTTP1.1支持长连接,需要增加新的请求头来帮助实现,而且在同一个TCP的连接中可以传送多个HTTP请求和响应。
  • Host头处理不同 在HTTP1.0中认为每台服务器都绑定一个唯一的IP地址,因此,请求消息中的URL并没有传递主机名hostname。 在HTTP1.1的请求消息和响应消息都支持Host头域,且请求消息中如果没有Host头域会报告一个错误:400 Bad Request。
  • 新增错误通知的管理

在HTTP1.1中新增了24个错误状态响应码。

1.5 HTTP1.1、HTTP2.0的区别

  • HTTP1.1的解析是基于文本协议的各式解析,而HTTP2.0的协议解析是二进制格式,更加的强大。
  • HTTP2.0支持多路复用: 一个连接可以并发处理多个请求。

一个连接上可以有多个request,且可以随机的混在一起,每个不同的request都有对应的id,服务端可以通过request_id来辨别,大大加快了传输速率。

  • HTTP2.0支持头部数据压缩: HTTP2.0对header的数据进行了压缩,加快了网络传输。

HTTP1.1中的header需要携带大量信息,而且每次都要重复发送。http2.0使用encode来减少传输的header大小。而且客户端和服务端可以各自缓存一份header filed表,避免了header的重复传输,还可以减少传输的大小。

  • HTTP2.0支持服务端推送: 通过解析html中的资源时,在解析到引入文件时,返回所需的文件(css或者js等),而不用再发起一次请求。

二、HTTPS

2.1 定义

HTTPS(安全的HTTP) 是 HTTP 协议的加密版本。它通常使用 SSL (en-US) 或者 TLS来加密客户端和服务器之间所有的通信 。这安全的链接允许客户端与服务器安全地交换敏感的数据,例如网上银行或者在线商城等涉及金钱的操作。

2.2 特点

  • 内容加密:采用混合加密技术,中间者无法直接查看明文内容
  • 验证身份:通过证书认证客户端访问的是自己的服务器
  • 保护数据完整性:防止传输的内容被中间人冒充或者篡改

三、HTTP和HTTPS的区别

  • HTTP 的URL以http://开头,而HTTPS的URL以https:// 开头
  • HTTP 是不安全的,而HTTPS 是安全的
  • HTTP 标准端口是80 ,而 HTTPS 的标准端口是443
  • 在OSI 网络模型中,HTTP工作于应用层,而HTTPS 的安全传输机制工作在传输层
  • HTTP 无法加密,而HTTPS 对传输的数据进行加密
  • HTTP无需证书,而HTTPS 需要CA机构wosign的颁发的SSL证书

四、状态码

分类

分类描述

1**

信息,服务器收到请求,需要请求者继续执行操作

2**

成功,操作被成功接收并处理

3**

重定向,需要进一步的操作以完成请求

4**

客户端错误,请求包含语法错误或无法完成请求

5**

服务器错误,服务器在处理请求的过程中发生了错误

1**:信息状态码

状态码

名称

描述

100

继续

初始的请求已经接受,请客户端继续发送剩余部分

101

切换协议

请求这要求服务器切换协议,服务器已确定切换

2**:成功状态码

状态码

名称

描述

200

成功

服务器已成功处理了请求

201

已创建

请求成功并且服务器创建了新的资源

202

已接受

服务器已接受请求,但尚未处理

203

非授权信息

服务器已成功处理请求,但返回的信息可能来自另一个来源

204

无内容

服务器成功处理了请求,但没有返回任何内容

205

重置内容

服务器处理成功,用户终端应重置文档视图

206

部分内容

服务器成功处理了部分GET请求

3**:重定向状态码

状态码

名称

描述

300

多种选择

针对请求,服务器可执行多种操作

301

永久移动

请求的页面已永久跳转到新的url

302

临时移动

服务器目前从不同位置的网页响应请求,但请求仍继续使用原有位置来进行以后的请求

303

查看其他位置

请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码

304

未修改

自从上次请求后,请求的网页未修改过

305

使用代理

请求者只能使用代理访问请求的网页

307

临时重定向

服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求

4**:客户端错误状态码

状态码

名称

描述

400

错误请求

服务器不理解请求的语法

401

未授权

请求要求用户的身份演验证

403

禁止

服务器拒绝请求

404

未找到

服务器找不到请求的页面

405

方法禁用

禁用请求中指定的方法

406

不接受

无法使用请求的内容特性响应请求的页面

407

需要代理授权

请求需要代理的身份认证

408

请求超时

服务器等候请求时发生超时

409

冲突

服务器在完成请求时发生冲突

410

已删除

客户端请求的资源已经不存在

411

需要有效长度

服务器不接受不含有效长度表头字段的请求

412

未满足前提条件

服务器未满足请求者在请求中设置的其中一个前提条件

413

请求实体过大

由于请求实体过大,服务器无法处理,因此拒绝请求

414

请求url过长

请求的url过长,服务器无法处理

415

不支持格式

服务器无法处理请求中附带媒体格式

416

范围无效

客户端请求的范围无效

417

未满足期望

服务器无法满足请求表头字段要求

5**:服务端错误状态码

状态码

名称

描述

500

服务器错误

服务器内部错误,无法完成请求

501

尚未实施

服务器不具备完成请求的功能

502

错误网关

服务器作为网关或代理出现错误

503

服务不可用

服务器目前无法使用

504

网关超时

网关或代理服务器,未及时获取请求

505

不支持版本

服务器不支持请求中使用的HTTP协议版本

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 网络基础之HTTP和HTTPS
    • 前言
      • 一、HTTP
        • 1.1 定义
        • 1.2 特点
        • 1.3 请求方式
        • 1.4 HTTP1.0、HTTP1.1的区别
        • 1.5 HTTP1.1、HTTP2.0的区别
      • 二、HTTPS
        • 2.1 定义
        • 2.2 特点
      • 三、HTTP和HTTPS的区别
        • 四、状态码
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档