由于HTTP是无状态协议中,当客户端发出多个请求给服务器的,如何在服务器唯一地识别特定客户机的请求在一段时间T1说,T2,T3 ...

我浏览网页和遇到像会话ID,URL重写和饼干方面来了。但是,如果有人解释它在一个更好的办法将是巨大的。具体而言,其中HTTP请求和响应的部分将被用于会话跟踪?

有帮助吗?

解决方案

至于你提到实现HTTP会话跟踪包括URL重写和饼干,常见的方式。会话跟踪基本要求会话ID是跨多个请求到服务器维护。这意味着每个给定的客户机向服务器发出请求时,它通过相同的会话ID。该服务器可以使用该ID来查找它维护的会话信息。

当使用cookie,服务器要求客户端通过设置Set-Cookie HTTP响应报头存储的cookie。该Cookie包含分配给该客户端的唯一的会话ID - 在这个例子中字符串“ABAD1D”:

    Set-Cookie: JSESSIONID=ABAD1D;path=/

在Cookie是然后由客户端使用关于每个请求Cookie HTTP请求头发送回服务器并因此在每个请求会话ID当前分配给客户端的服务器被通知。

    Cookie: JSESSIONID=ABAD1D

当使用URL重写,这相同的会话ID在URL代替它的某个地方。同样,服务器从URL中提取会话ID,以便它可以为特定的客户机查找会话:

    http://my.app.com/index.jsp;JSESSIONID=ABAD1D

然而,服务器还必须确保在发回给客户端的网页的网址也被改写为包含特定的客户端的会话ID。作为会话ID在网址编码的,会话跟踪的这种方法是透明的浏览器。通常,一台服务器将诉诸URL重写,如果它发现它是无法设置客户端上的会话cookie - 这意味着该客户端不支持/允许Cookie

注意,会话可以过期。这意味着,如果服务器不“看到”的给定会话ID用于在一段时间内,它可以去除会话数据以保存资源。

其他提示

  

具体地,其中HTTP的一部分   请求和响应将用于   会话跟踪?

在HTTP响应,服务器可以设置cookie。它与Set-Cookie头这样做。例如:

Set-Cookie: session=12345; path=/

然后,客户端返回匹配与cookie沿已设置的场所中的所有cookie,其可以包括路径(如上所述)和域的值,并且还没有过期。

在cookie被发送回服务器作为HTTP报头的一部分。例如:

Cookie: session=12345

的原始属性信息没有被发送回与cookie。

一个唯一的cookie允许服务器与特定的浏览器实例的唯一密钥相关联。然后,服务器可以使用该密钥作为保持独特每个用户的状态信息的索引为哈希表或数据库表中。

会话跟踪是一个服务器端的事情。

一个web服务器发出一个返回到浏览器的一些会话标识符。浏览器提交该会话标识符与每个请求一起。

这可能是使用Cookie透明用户完成。

的会话处理是在通过发送饼干以客户机处理的情况下最。该cookie将被发送回服务器上从该特定客户端的每个请求。

session id将与服务器端(文件,RAM空间),因此服务器的一些资源通过读取session id在cookie中可以找到这个资源,然后知道它是哪个客户端相关联。

scroll top