会话ID是在服务器端还是客户端生成的?

6
这个网页http://www.w3schools.com/ASP/prop_sessionid.asp说明会在服务器端生成一个会话ID。如果是这样的话,那么服务器如何知道第二次请求响应周期中仍然是同一个客户端呢?当然,SessionId应该在客户端生成,以便客户端确保将相同的值传递给服务器。

经典 ASP 不支持无 cookie 模式,只有 ASP.NET 支持。 - Kev
4个回答

16

Session ID是由服务器端生成的,但存储在客户端的Cookie中。每当客户端向服务器发出请求时,Session ID用于验证客户端的现有会话。


1
不一定是一个 cookie。我可以被嵌入在查询字符串中。 - Salamander2007
1
链接是经典ASP示例,仅使用会话cookie。ASP.NET可以使用无cookie会话。 - Kev
但是它也存储在服务器上,对吧(用于验证目的)? - stdout

3

会话ID通常在服务器上生成。然后将其作为HTTP头中的cookie发送到客户端,或者将其包含在HTML中,例如:链接变为href=my.html?sessionid=1234。

客户端的下一个请求将包含会话ID,可以通过cookie或GET请求的方式进行传递。


2
谁给这个点了踩?如果有人发现这个答案有问题,请告诉我... - Tom

0

如果不存在会话 ID,则服务器将生成一个。但一旦生成,客户端可以将该 ID 传回服务器。如果客户端修改了该 ID,则可能会从服务器获得错误,并生成新的 ID。


0

服务器会生成ID,然后客户端将其存储在会话cookie中,服务器在随后的请求中提取该cookie。

如果服务器以无cookie模式运行,则会话密钥成为URL的一部分,并由服务器从其中解析。

补充说明:如果服务器期望使用会话cookie但客户端禁用了cookie,则从服务器的角度来看,所有请求都是新会话,因为它无法确定这是同一用户。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接