HTTP 及 HTTPS 基础

URL 只支持 ASCII 码,区分大小写,有长度限制。域名不区分大小写。

一、请求和响应报文

在这里插入图片描述

二、HTTP 方法

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

二、HTTP 状态码

服务器返回的 响应报文 中第一行为状态行,包含了状态码以及原因短语,用来告知客户端请求的结果。
在这里插入图片描述

1XX 信息
  • 100 Continue :表明到目前为止都很正常,客户端可以继续发送请求或者忽略这个响应。
2XX 成功
  • 200 OK

  • 204 No Content :请求已经成功处理,但是返回的响应报文不包含实体的主体部分。一般在只需要从客户端往服务器发送信息,而不需要返回数据时使用。

  • 206 Partial Content :表示客户端进行了范围请求,响应报文包含由 Content-Range 指定范围的实体内容。

3XX 重定向
  • 301 Moved Permanently :永久性重定向

  • 302 Found :临时性重定向

  • 303 See Other :和 302 有着相同的功能,但是 303 明确要求客户端应该采用 GET 方法获取资源。

  • 注:虽然 HTTP 协议规定 301、302 状态下重定向时不允许把 POST 方法改成 GET 方法,但是大多数浏览器都会在 301、302 和 303 状态下的重定向把 POST 方法改成 GET 方法。

  • 304 Not Modified :如果请求报文首部包含一些条件,例如:If-Match,If-Modified-Since,If-None-Match,If-Range,If-Unmodified-Since,如果不满足条件,则服务器会返回 304 状态码。

  • 307 Temporary Redirect :临时重定向,与 302 的含义类似,但是 307 要求浏览器不会把重定向请求的 POST 方法改成 GET 方法。

4XX 客户端错误
  • 400 Bad Request :请求报文中存在语法错误。

  • 401 Unauthorized :该状态码表示发送的请求需要有认证信息(BASIC 认证、DIGEST 认证)。如果之前已进行过一次请求,则表示用户认证失败。

  • 403 Forbidden :请求被拒绝。

  • 404 Not Found

5XX 服务器错误
  • 500 Internal Server Error :服务器正在执行请求时发生错误。

  • 503 Service Unavailable :服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

连接管理

在这里插入图片描述

短连接与长连接

  • 当浏览器访问一个包含多张图片的 HTML 页面时,除了请求访问 HTML 页面资源,还会请求图片资源。如果每进行一次 HTTP 通信就要新建一个 TCP 连接,那么开销会很大。

  • 长连接只需要建立一次 TCP 连接就能进行多次 HTTP 通信。

  • HTTP/1.1 开始默认是长连接的,如果要断开连接,需要由客户端或者服务器端提出断开,使用 Connection : close;

  • 在 HTTP/1.1 之前默认是短连接的,如果需要使用长连接,则使用 Connection : Keep-Alive。

流水线

  • 默认情况下,HTTP 请求是按顺序发出的,下一个请求只有在当前请求收到响应之后才会被发出。由于会受到网络延迟和带宽的限制,在下一个请求被发送到服务器之前,可能需要等待很长时间。

  • 流水线是在同一条长连接上发出连续的请求,而不用等待响应返回,这样可以避免连接延迟。

三、HTTP 首部

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、Cookie

HTTP 协议是无状态的,主要是为了让 HTTP 协议尽可能简单,使得它能够处理大量事务。HTTP/1.1 引入 Cookie 来保存状态信息。

Cookie 曾一度用于客户端数据的存储,因为当时并没有其它合适的存储办法而作为唯一的存储手段,但现在随着现代浏览器开始支持各种各样的存储方式,Cookie 渐渐被淘汰。新的浏览器 API 已经允许开发者直接将数据存储到本地,如使用 Web storage API(本地存储和会话存储)或 IndexedDB。

在这里插入图片描述
Path 这里表示再次访问服务器时,访问哪些路径需要携带Cookie。
在这里插入图片描述

在这里插入图片描述
Cookie 生成的过程
在这里插入图片描述
Set-Cookie 字段的属性:
在这里插入图片描述

  • 可以看到Cookie 在首部字段
  • Cookie 一般每个域名最多存储50个,总大小限制4095个字节。
Cookie 和 Session 的区别
  • Cookie 保存若干键值对,Session 保存一个Key。
  • Cookie 占用的带宽更大(键值对比较多时), Session不容易在多台服务器之间共享。
  • Session 基于Cookie工作,都在首部字段中传输,Session通常是名为JSESIONID的一个Cookie。
代理

在这里插入图片描述

五、HTTPS

HTTPS 并非是应用层的一种新协议。只是 HTTP 通信接口部分用SSL(Secure Socket Layer)和 TLS(Transport Layer Security)协议代替而已。

通常,HTTP 直接和 TCP 通信。当使用 SSL 时,则演变成先和 SSL 通信,再由 SSL 和 TCP 通信了。简言之,所谓 HTTPS,其实就是身披 SSL 协议这层外壳的 HTTP。

在这里插入图片描述

1. HTTPS 加密(防窃听):
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
使用公钥加密,使用私钥解密

使用私钥签名,使用公钥验证

使用私钥加密的内容也可以使用公钥解密,只是因为公钥是公开的,所以也就没有加密的意义了。使用私钥签名的原理是,K机构有一对秘钥K,使用其中私钥K文件A(一般取文件A的Hash值)加密,这样把文件A私钥K加密过的签名一同发送给用户B用户B拥有公钥K,则用户B可使用公钥K签名解密,再对比文件A(或其Hash值),如果一致则说明文件A经过了机构K的签名。当这个文件A是某网站的公钥时即为HTTPS的认证原理。

HTTPs 采用混合的加密机制,使用非对称密钥加密用于传输对称密钥来保证传输过程的安全性,之后使用对称密钥加密进行通信来保证通信过程的效率

HTTPS 加密过程:

在这里插入图片描述
2. HTTPS 认证(防伪装):
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

3. HTTPS 完整性保护(防篡改):

SSL 提供报文摘要功能来进行完整性保护。

HTTP 也提供了 MD5 报文摘要功能,但不是安全的。例如报文内容被篡改之后,同时重新计算 MD5 的值,通信接收方是无法意识到发生了篡改。

HTTPs 的报文摘要功能之所以安全,是因为它结合了加密认证这两个操作。试想一下,加密之后的报文,遭到篡改之后,也很难重新计算报文摘要,因为无法轻易获取明文。

六、HTTP/2.0

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

七、HTTP/1.1 新特性
  • 默认是长连接
  • 支持流水线
  • 支持同时打开多个 TCP 连接
  • 支持虚拟主机
  • 新增状态码 100
  • 支持分块传输编码
  • 新增缓存处理指令 max-age
八、GET 和 POST 比较

-> GET 和 POST 比较

作用

GET 用于获取资源,而 POST 用于传输实体主体。

参数

GET 和 POST 的请求都能使用额外的参数,但是 GET 的参数是以查询字符串出现在 URL 中,而 POST 的参数存储在实体主体(不是首部字段)中,所以HTTP 2.0 时会发送两个帧,因为多了实体帧。不能因为 POST 参数存储在实体主体中就认为它的安全性更高,因为照样可以通过一些抓包工具(Fiddler)查看。

因为 URL 只支持 ASCII 码,因此 GET 的参数中如果存在中文等字符就需要先进行编码。例如 中文 会转换为 %E4%B8%AD%E6%96%87,而空格会转换为 %20。POST 参数支持标准字符集

GET /test/demo_form.asp?name1=value1&name2=value2 HTTP/1.1
Host: w3schools.com
POST /test/demo_form.asp HTTP/1.1
Host: w3schools.com
name1=value1&name2=value2

安全

安全的 HTTP 方法不会改变服务器状态,也就是说它只读的。

GET 方法是安全的,而 POST 却不是,因为 POST 的目的是传送实体主体内容,这个内容可能是用户上传的表单数据,上传成功之后,服务器可能把这个数据存储到数据库中,因此状态也就发生了改变。

安全的方法除了 GET 之外还有:HEAD、OPTIONS。

不安全的方法除了 POST 之外还有 PUT、DELETE。

在这里插入图片描述

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值