大话HTTP3 -- HTTP协议的特性和使用方法
HTTP协议中的编码和解码
字符集与编码
编码和解码的方式不一致,就会产生乱码。
URL的编码与解码
URL是采用ASCII字符集进行编码的,所以如果URL中含有非ASCII字符集中的字符,要对其进行编码。
URL中一些保留字符,如 "&" 表示参数分隔符,如果想要在URL中使用这些保留字,那就需要编码。
“%编码”规范:对 URL 中属于 ASCII 字符集的非保留字不做编码;对URL中的保留字需要取其ASCII内码,然后加上“%”前缀将该字符进行编码;对于URL中的非ASCII字符需要取其Unicode内码,然后加上"%"前缀将该字符进行编码。
HTTP协议的基本认证
身份认证信息:
密码
动态令牌
数字证书
生物认证
IC卡等
常见认证方式
BASIC认证 (基本认证)
DIGEST认证 (摘要认证)
SSL 客户端认证
FromBase认证 (基于表单认证)
BASIC认证
DIGEST认证
为弥补BASIC认证存在的弱点,从 HTTP/1.1 起就有了 DIGEST 认证。
DIGEST认证同样使用 质询/响应 的方式,但不会像 BASIC 认证那样直接发送明文密码。
SSL客户端认证
SSL客户端认证是借由HTTPS的客户端证书完成认证的方式。凭借客户端证书认证,服务器可确认访问是否来自已登陆的客户端。
基于表单的认证
基于表单的认证方法并不是在HTTP协议中定义的。
使用由Web应用程序各自实现基于表单的认证方式。
通过Cookie和Session的方式来保持用户的状态。
HTTP的长连接与短连接
HTTP 协议是基于 请求/响应 模式的,因此只要服务端给了响应,本次 HTTP 请求就结束了。
HTTP 的长连接和短连接本质上是TCP长连接和短连接。
HTTP/1.0 中,默认使用的是短连接。也就是说,浏览器和服务器每进行一次HTTP操作,就建立一次连接,结束就中断。
HTTP/1.1 起,默认使用长连接,用以保持连接特性。
短连接:建立连接 - 数据传输 - 关闭连接 ... 建立连接 - 数据传输 - 关闭连接
长连接:建立连接 - 数据传输 ... (保持连接) ... 数据传输 - 关闭连接
1