我有一个asp.net登录页面,初始化时会设置一些会话变量。当用户单击login时,会发出一个AJAX请求,该请求验证用户并设置其他会话变量并将结果返回给客户端。然后根据登录结果重定向客户端。在重定向页面中,我可以访问登录页面初始化时(即登录前)设置的会话变量,但在登录验证期间(ajax调用的一部分)中没有设置任何会话变量。
这是预期的行为吗?为什么ajax调用会生成新会话,从而导致数据丢失?
由于
答案 0 :(得分:1)
你的ajax调用的位置是否与应用程序的其余部分在同一个应用程序空间中?如果我没记错,你就无法在应用程序之间共享会话信息。这可能是正在发生的事情。
答案 1 :(得分:1)
通常,浏览器会发送会话ID和ajax请求。如果您使用Firebug或类似的东西,您可以查看ajax请求的内容并检查是否发送了会话ID。
会话ID存储在cookie中,该cookie(取决于选项)只能用于相同的域/主机名。这可能是它未被发送的原因。
根据您的代码,我猜如果没有发送会话ID,则会创建一个新会话ID。
答案 2 :(得分:0)
会话ID存储在cookie中,该cookie在响应的标头中返回。在进行AJAX调用时,cookie只是响应的一部分。如果您希望将同一会话用于其他请求,则必须获取该cookie并将其发送到请求的标头中。