使用 AJAX 实现 COOKIEINSERT 持久性

使用 AJAX 实现 COOKIEINSERT 持久性

我们正在使用 COOKIEINSERT 集来使用 NetScaler 后面 4 个服务器的会话 cookie。如果我打开网页,它会加载正常。如果我删除 NetScaler 添加的 cookie 并刷新页面,系统会要求我再次登录(使用 Windows 身份验证、NTLM)。需要注意的是,如果请求恰好转到同一台服务器,它就会成功。如果它选择了另一台服务器,登录就会失败。

在正常情况下,删除该 cookie 不太可能发生。但是,我们有另一个应用程序向同一 Web 应用程序公开的 API 发出请求。如果 cookie 不存在,则大致同时触发的多个 AJAX 请求可能会或可能不会起作用,并且每个请求可能会转到不同的服务器(我们有 HTTP 标头来查看情况是否如此)。

  1. 如果删除该 cookie 后是否需要再次登录?
  2. 当我假设 NetScaler 尝试设置与一台服务器的持久会话时,NetScaler 如何处理这样的多个请求?它是否关心同一客户端是否向不同的服务器发出/发起请求?尽管它是一个会话 cookie,但 NetScaler 会进行某种跟踪?

答案1

首先,持久性 cookie 被删除后是否需要再次登录完全取决于您的应用程序。如果您的应用程序有一个用于用户会话的共享后端,那么只要您的用户会话仍然有效,您到达哪个后端服务器就无关紧要了。

此外,假设在包含多个 AJAX 请求的事务过程中,服务器发生故障。此时,NetScaler 还会将下一个请求定向到下一个可用的后端服务器。

接下来,考虑发送多个 AJAX 调用的情况。如果您的网页由相同的后端服务器提供服务,则客户端已经有一个可用的 cookie。(AJAX 调用不会触发,直到调用它们的 HTML/JS 代码在浏览器中加载,这意味着已经有响应并且已经设置了 cookie)。

我不确定这是否完全回答了你的第二个问题?

相关内容