一、HTTP
HTTP(Hyper Text TransferProtocol),即超文本传输协议,是用于万维网服务器与本地浏览器之间传输超文本的协议。坦白的讲,HTTP协议就是服务器(Server)和客户端(Client)之间进行数据交互的一种形式。
1.HTTP工作原理
HTTP协议工作与客户端-服务端架构之上,浏览器作为HTTP客户端通过URL向HTTP服务端发送所有请求,WEB服务器根据接收到的请求后,向客户端发送相应信息。
2.常见的请求头信息
accept: 浏览器通过这个头告诉服务器,它所支持的数据类型。
Accept-Charset:浏览器通过这个头告诉服务器,它支持哪种字符集
Accept-Encoding:浏览器通过这个头告诉服务器,支持的压缩格式
Accept-Language:浏览器通过这个头告诉服务器,它的语言环境
Host:浏览器通过这个头告诉服务器,想访问哪台主机
If-Modified-Since:浏览器通过这个头告诉服务器,缓存数据的时间
Referer:浏览器通过这个头告诉服务器,客户机是哪个页面来的(防盗链)
Connection:浏览器通过这个头告诉服务器,请求完后是断开链接还是何持链接
X-Requested-With:XMLHttpRequest代表通过ajax方式进行访问
User-Agent:请求载体的身份标识
3.常见的响应头信息
Location:服务器通过这个头,来告诉浏览器跳到哪里
Server:服务器通过这个头,告诉浏览器服务器的型号
Content-Encoding:服务器通过这个头,告诉浏览器,数据的压缩格式
Content-Length:服务器通过这个头,告诉浏览器回送数据的长度
Content-Language:服务器通过这个头,告诉浏览器语言环境
Content-Type:服务器通过这个头,告诉浏览器回送数据的类型
Refresh:服务器通过这个头,告诉浏览器定时刷新
Content-Disposition:服务器通过这个头,告诉浏览器以下载方式打数据
Transfer-Encoding:服务器通过这个头,告诉浏览器数据是以分块方式回送的
Expires:-1 控制浏览器不要缓存
Cache-Control:no-cache
Pragma:no-cache
二、HTTPS
HTTPS (Secure Hypertext Transfer Protocol)安全超文本传输协议,HTTPS是在HTTP上建立SSL加密层,并对传输数据进行加密,是HTTP协议的安全版。
1.HTTPS加密算法
对称秘钥加密
客户端采用已知的算法对要发送至服务器的信息加密,另外再单独发送一次秘钥,服务端对加密的信息采用接收的秘钥进行解密。
虽然秘钥在传输中间是被加密的,但仍有潜在的危险,一旦被窃听或者信息被挟持,就有可能破解秘钥并破解信息,因此“共享秘钥加密”这种方式存在安全隐患。
非对称秘钥加密
在使用非对称加密的时候有两把锁,一把是私有密钥,一把是公有密钥,使用非对称加密时,客户端按照服务器给定的公开密钥进行加密处理,服务器接收到密文后再通过私有密钥进行解密。
- 如何保证接收端向发送端发出公开密钥的时候发送端确保收到的是预先要发送的而不是被挟持的,只要是发送密钥就有被挟持的风险。
- 非对称加密的方式效率比较低,处理起来很复杂,通信过程中使用就有一定的效率问题影响通信速度
证书密钥加密
数字证书认证机构是客户端与服务器都可信赖的第三方机构。
- 服务器的开发者携带公开密钥,向数字证书认证机构提出公开密钥申请,数字证书认证机构在认清申请者的身份并审核通过后,会对开发者申请的公开密钥做数字签名,然后分配这个已签名的公开密钥,并将密钥放在证书里面绑定。
- 服务器将这个数字证书发送个客户端,客户端通过数字证书中的数字签名来验证公钥的真伪,确保服务器传过来的公开密钥是真实的,一般情况下证书的数字签名是很难被伪造的,这取决于认证机构的公信力,一旦去人信息无误后,客户端就会通过公开密钥对报文进行加密发送,服务器接收到以后用自己的私钥进行解密。