E. 与HTTP协作的Web服务器

142 阅读4分钟

(一)代理服务器缓存

使用代理服务器的理由有:利用缓存技术(稍后讲解)减少网络带宽的流量,组织内部针对特定网站的访问控制,以获取访问日志为主要目的,等等。

代理有多种使用方法,按两种基准分类:一种是是否使用缓存,另一种是是否会修改报文。

缓存的优势: 于利用缓存可避免多次从源服务器转发资源。因 此客户端可就近从缓存服务器上获取资源,而源服务器也不必多次处 理相同的请求了

image.png

image.png

缓存:

  • 浏览器缓存
  • 代理服务器缓存 若所有的缓存失效,则直接向源服务器发送请求资源。

image.png

(二)身份验证

HTTP/1.1 使用的认证方式如下所示:

BASIC 认证(基本认证, 401 Authentication)
DIGEST 认证(摘要认证)
SSL 客户端认证
FormBase 认证(基于表单认证,包括session、cookie等,最常见)

image.png

步骤 1: 客户端把用户 ID 和密码等登录信息放入报文的实体部分, 通常是以 POST 方法把请求发送给服务器。
而这时,会使用 HTTPS 通信来进行 HTML 表单画面的显示和用户输入数据的发送。

步骤 2: 服务器会发放用以识别用户的 Session ID (Token)。通过验证从客户端发送过来的登录信息进行身份认证,
然后把用户的认证状态与 Session ID 绑定后记录在服务器端。

步骤 3: 客户端接收到从服务器端发来的 Session ID 后,会将其作为 Cookie 保存在本地。
下次向服务器发送请求时,浏览器会自动发送 Cookie,所以 Session ID 也随之发送到服务器。
服务器端可通过验证 接收到的 Session ID 识别用户和其认证状态。

(三)实现多个网站之间共享登录状态

首先,将用户信息的验证中心独立出来,作为一个单独的认证中心,该认证中心的作用是判断客户端发送的账号密码的正确性,然后向客户端返回对应的用户信息,并且返回一个由服务器端秘钥加密的登录信息的 token 给客户端,该token 具有一定的有效时限。

一个应用系统跳转到另一个应用系统时,通过 url 参数的方式来传递 token,然后转移到的应用站点发送给认证中心,认证中心对 token 进行解密后验证,如果用户信息没有失效,则向客户端返回对应的用户信息,如果失效了则将⻚面重定向会单点登录⻚面。

(四)正向代理和反向代理

正向代理: 我们常说的代理也就是指正向代理,正向代理的过程,它隐藏了真实的请求客户端,服务端不知道真实的客户端是谁,客户端请求的服务都被代理服务器代替来请求。靠近客户端,代表客户端向服务端发起请求。

反向代理:反向代理隐藏了真实的服务端,当我们请求一个网站的时候,背后可能有成千上万台服务器为我们服务,但具体是哪一台,我们不知道,也不需要知道,我们只需要知道反向代理服务器是谁就好了,反向代理服务器会帮我们把请求转发到真实的服务器那里去。反向代理器一般用来实现负载平衡。靠近服务端,代表服务器响应客户端。

拓展

Session

1.什么是session?
Session是另一种记录客户状态的机制,不同的是Cookie保存在客户端浏览器中,而Session保存在服务器上。客户端浏览器访问服务器的时候,服务器把客户端信息以某种形式记录在服务器上,这就是Session。客户端浏览器再次访问时只需要从该Session中查找该客户的状态就可以了session是一种特殊的cookie。cookie是保存在客户端的,而session是保存在服务端。

2.为什么要用session? 由于cookie 是存在用户端,而且它本身存储的尺寸大小也有限,最关键是用户可以是可见的,并可以随意的修改,很不安全。那如何又要安全,又可以方便的全局读取信息呢?于是,这个时候,一种新的存储会话机制:session 诞生了

3.session原理
当客户端第一次请求服务器的时候,服务器生成一份session保存在服务端,将该数据(session)的id以cookie的形式传递给客户端;以后的每次请求,浏览器都会自动的携带cookie来访问服务器(session数据id)。等到当前sessionId timeout回自动销毁,或者用户主动退出,主动销毁。

image.png