HTTP状态码&&HTTPS&&鉴权

2021-11-23/2022-05-11

状态码

HTTP 状态码负责表示客户端 HTTP 请求的返回结果、标记服务器端 的处理是否正常、通知出现的错误等工作。

HTTP状态码根据数字中的第一位指共分为5种类型:

分类分类描述
1**信息性状态码
2**成功状态码
3**重定向
4**客户端错误
5**服务器错误

2XX 成功

200 OK

表示从客户端发来的请求在服务器端被正常处理了。

204 No Content

代表服务器接收的请求已成功处理,但在返回的响应报文中 不含实体的主体部分。返回 204 响应,那么浏览器显示的页面 不发生更新。

一般在只需要从客户端往服务器发送信息,而对客户端不需要发送新信息内容的情况下使用。

206 Partial Content

表示客户端进行了范围请求,而服务器成功执行了这部分的 GET 请求。

3XX重定向

301 Moved Permanently

永久性重定向。该状态码表示请求的资源已被分配了新的 URI,以后 应使用资源现在所指的 URI。

302 Found

临时性重定向。该状态码表示请求的资源已被分配了新的 URI,但该URI是临时的。

304 Not Modified

该状态码表示客户端请求的资源已在服务端找到,但客户端发送的的请求附带的条件不符合服务器所要求的

304 虽然被划分在 3XX 类别中,但是和重定向没有关 系。

307 Temporary Redirect

临时重定向。该状态码与 302 Found 有着相同的含义。尽管 302 标准禁止 POST 变换成 GET,但实际使用时大家并不遵守。 307 会遵照浏览器标准,不会从 POST 变成 GET。但是,对于处理响 应时的行为,每种浏览器有可能出现不同的情况。

4XX客户端错误

400 Bad Request

表示请求报文中存在语法错误。

401 Unauthorized

该状态码表示发送的请求需要有通过 HTTP 认证(BASIC 认证、 DIGEST 认证)的认证信息**。另外若之前已进行过 1 次请求,则表示 用 户认证失败**(这表明会先进行一次请求返回401要求认证,若是再次验证失败后再次返回401则表示用户认证失败)。 返回含有 401 的响应必须包含一个适用于被请求资源的 WWWAuthenticate 首部用以质询(challenge)用户信息。当浏览器初次接收 到 401 响应,会弹出认证用的对话窗口。

现在基本使用表单认证

403 Forbidden

表明对请求资源的访问被服务器拒绝了

404 Not Found

表明服务器上无法找到请求的资源

5XX服务端错误

500 Internal Server Error

表明服务器端在执行请求时发生了错误

503 Service Unavailable

表明服务器暂时处于超负载或正在进行停机维护,现在无法 处理请求

HTTPS

HTTP协议有这些不足:

通信使用明文(不加密),内容可能会被窃听

不验证通信方的身份,因此有可能遭遇伪装

无法证明报文的完整性,所以内容有可能遭篡改

为了统一解决上述这些问题,需要在 HTTP 上再加入加密处理和认证 等机制。我们把添加了加密及认证机制的 HTTP 称为 HTTPS(HTTP Secure)。

HTTP+ 加密 + 认证 + 完整性保护 =HTTPS

HTTPS 是身披 SSL 外壳的 HTTP,通常HTTP 直接和 TCP 通信。当使用 SSL时,则演变成先和 SSL通 信,再由 SSL和 TCP 通信。

加密(防窃听)

共享密钥加密

加密和解密同用一个密钥的方式称为共享密钥加密(Common key crypto system),也被叫做对称密钥加密。

但使用这种方式进行加密需要想办法将密钥安全的告知对方。

公开密钥加密

公开密钥加密使用一对非对称的密钥。一把叫做私有密钥(private key),另一把叫做公开密钥(public key)。私有密钥不能让其他任何人知道,而公开密钥则可以随意发布,任何人都可以获得。 使用公开密钥加密方式,发送密文的一方使用对方的公开密钥进 行加密处理,对方收到被加密的信息后,再使用自己的私有密钥进行解密。

通常使用公开密钥加密方式传输共享密钥后再使用共享密钥加密,这是因为公开密钥加密方式所要消耗的资源更高

认证(防伪装)

使用由数字证书认证机构(CA,Certificate Authority)和其相关机关颁发的公开密钥证书来进行认证。

流程:

0.服务器的运营人员向数字证书认证机构申请公开密钥。数字证书认证机构将公开密钥放入公钥证书后绑定在一起。

1.服务器会将这份由数字证书认证机构颁发的公钥证书发送给客户端

2.接到证书的客户端可使用数字证书认证机构的公开密钥,对那张证书进行验证,浏览器会事先在内部植入常用认证机关的公开密钥。

完整性保护(防篡改)

应用层发送数据时会附加一种叫做 MAC(Message Authentication Code)的报文摘要。MAC 能够查知报文是否遭到