首页 > 解决方案 > 在不同域中的两个 servlet 之间共享 http 会话

问题描述

我正在开发一个在具有两个不同域名的服务器上运行的 java 应用程序:aaa.com 和 bbb.net。
我有一个 servlet (A) 在 aaa.com/A 上运行,另一个 servlet (B) 在 bbb.net/B 上运行。
在 servlet A 中,在 doGet() 函数中:

HttpSession session = req.getSession(true);
session.setAttribute("test", "hello");
req.sendRedirect("bbb.net/B");

在 servlet B 中,在 doGet() 函数中:

HttpSession session = req.getSession();
// session: null

我想在 servlet B 中获取 servlet A 的测试变量,但似乎该变量丢失了。出于某种原因,我不想使用参数。我引用了这个站点(https://javarevisited.blogspot.com/2011/09/sendredirect-forward-jsp-servlet.html),有两点让我认为可以从 servlet B 中的 servlet A 检索变量:

  1. 如果 sendRedirect 请求被转移到另一个资源到不同的域或不同的服务器以进行进一步的处理。
  2. 但是在 sendRedirect 中,如果我们想使用我们必须将数据存储在会话中或与 URL 一起传递。

我在这里理解有什么问题吗?

标签: sessionservletshttpsession

解决方案


推荐阅读