dex*_*ter 27 sessiontracking http session-state
由于HTTP是无状态协议,当客户端向服务器发出大量请求时,服务器如何在一段时间内唯一地标识特定客户端的请求,例如t1,t2,t3 ..
我浏览了网页,遇到了会话ID,网址重写和Cookie等术语.但如果有人以更好的方式解释它会很棒.具体而言,HTTP请求和响应的哪一部分将用于会话跟踪?
tea*_*bot 42
如您所述,实现HTTP会话跟踪的常用方法包括URL重写和cookie.会话跟踪基本上要求在对服务器的多个请求之间维护会话ID.这意味着每次给定客户端向服务器发出请求时,它都会传递相同的会话ID.服务器可以使用此ID来查找它维护的会话信息.
使用cookie时,服务器会通过设置Set-CookieHTTP响应标头要求客户端存储cookie .此cookie包含分配给该客户端的唯一会话ID - 在此示例中为字符串'ABAD1D':
Set-Cookie: JSESSIONID=ABAD1D;path=/
Run Code Online (Sandbox Code Playgroud)
然后,客户端使用Cookie每个请求上的HTTP请求标头将cookie发送回服务器,从而在每个请求上通知服务器当前分配给客户端的会话ID.
Cookie: JSESSIONID=ABAD1D
Run Code Online (Sandbox Code Playgroud)
使用URL重写时,会在URL中的某处发送相同的会话ID.同样,服务器从URL中提取会话ID,以便它可以查找特定客户端的会话:
http://my.app.com/index.jsp;JSESSIONID=ABAD1D
Run Code Online (Sandbox Code Playgroud)
但是,服务器还必须确保发送回客户端的网页中的任何URL也被重写以包含该特定客户端会话ID.由于会话ID是在URL中编码的,因此这种会话跟踪方法对浏览器是透明的.如果服务器发现无法在客户端上设置会话cookie,则通常会使用URL重写 - 这意味着客户端不支持/允许cookie.
请注意,会话可能会过期.这意味着如果服务器在一段时间内没有"看到"给定的会话ID,它可能会删除会话数据以保留资源.
Ric*_*kNZ 10
具体而言,HTTP请求和响应的哪一部分将用于会话跟踪?
在HTTP响应中,服务器可以设置cookie.它使用Set-Cookie标头.例如:
Set-Cookie: session=12345; path=/
Run Code Online (Sandbox Code Playgroud)
然后,客户端返回与cookie一起设置的属性匹配的所有cookie的值,其中包括路径(如上所述)和域,以及尚未过期的路径.
Cookie作为HTTP标头的一部分发送回服务器.例如:
Cookie: session=12345
Run Code Online (Sandbox Code Playgroud)
没有原始属性信息与cookie一起发回.
唯一cookie允许服务器将唯一键与特定浏览器实例相关联.然后,服务器可以使用该密钥作为哈希表或数据库表的索引,该表包含唯一的每用户状态信息.
| 归档时间: |
|
| 查看次数: |
54910 次 |
| 最近记录: |