在服务器端
HTTP请求是无状态的,会话通过不同的方式位于HTTP之上
- URL重写 (例如,服务器开始新的会话并将其ID返回给客户端,然后客户端将会话ID附加到所有后续请求中
http://host:port/path;session_id=12345
) - cookie (例如,在创建会话时,服务器以cookie编码的会话ID进行响应,并且在服务器端,您希望该cookie将每个请求与现有会话相关联)。
客户有责任通过服务器期望的方式确保他们参与会话。使用Java Servlet API实现服务器时,它是 jsessionid
cookie或URL后面带有相同名称的查询参数,用于标识会话ID。
如果客户端不支持cookie,则必须使用Java Servlet API重定向到所创建的URL
HttpServletResponse.enpreRedirectURL(String url)。
为了从servlet重定向,请使用
HttpServletResponse.sendRedirect(String url);。
使用标准的HTTP重定向响应服务器将简化您的设计。 jQuery
确实实现了这些标准,因此将遵循此处说明的来自服务器的 HTTP 301 和 302响应,因此客户端上不需要重定向逻辑。
在客户端
您的客户端是 jquery ,当后续对同一域发出请求时,其ajax实现将尊重并重播为任何给定域设置的cookie。
如果您要重定向到其他域,则要让 jquery 与 CORS 会话一起使用,请添加
xhrFields到您的请求中:
$.ajax({ url: a_cross_domain_url, xhrFields: { withCredentials: true }});


