【问题标题】:Can a cookie be used to pass data from a web app on one server to a web app on a different server in the same domain?是否可以使用 cookie 将数据从一台服务器上的 Web 应用程序传递到同一域中不同服务器上的 Web 应用程序?
【发布时间】:2015-05-23 08:47:36
【问题描述】:

我的任务是从一个应用程序向另一个应用程序发送数据。资源很可能位于不同的 Web 服务器上。我还不知道,所以我假设它们在不同的服务器上。但是,它们在同一个域中,如下所示:

http://a.bbb.com/SevletX
http://a.bbb.com/ServletY

我需要能够将一些敏感数据从第一个资源发送到第二个资源。假设它们位于 2 个不同的服务器上,RequestDispatcher 将无法工作。我没有使用查询字符串的选项,因为数据是敏感信息(用户凭据)。

  1. 如果我在第一个资源中设置一个 cookie 并重定向,该 cookie 是否可用于第二个资源?我没有可以测试的环境。

  2. 如果上述情况属实,我可以序列化一个对象,将其转换为字符串,然后在cookie中设置字符串值并在第二个资源中检索它,反序列化并取回对象吗?

  3. cookie 是否足够安全(比如通过 https)来发送敏感数据,例如用户凭据?

【问题讨论】:

  • 你可以使用cookie吗?是的。你应该?一般来说,没有。特别是对于凭证。我不确定用例,但现代应用程序通常使用基于令牌的身份验证,如 oauth。
  • 你说我可以使用cookies。 Web 服务器是否在不同的物理机器上是否重要?此外,这实际上不是身份验证问题。我不想做单点登录。但是,我需要将数据传递到另一个 Web 服务器,该服务器用于通过 JNLP 文件将数据传递给富客户端。所以我必须想办法将数据从 web app1 安全地传递到 web app2。

标签: java servlets cookies web-applications webserver


【解决方案1】:
  1. 可以,只要在同一台计算机上即可。
  2. 是的,您应该能够序列化它并从不同的脚本中检索对象。
  3. 而且 cookie 是本地的,因此不会通过域发送。

编辑:您说它们可能位于两个不同的 Web 服务器上,因此您将无法共享 cookie,您应该尝试类似的方法,而是将数据存储在 MYSQL 服务器中,以便两个程序都可以访问序列化的对象。

【讨论】:

  • 那么,如果Web服务器在不同的域上,即使域名相同,它们也不能共享cookie?另外,我没有得到“本地”部分。我认为 cookie 会通过网络通过每个请求发送回服务器。
  • 它们是,但你说它们可能在两台不同的机器上,所以即使它们在同一个域上,它们也不会共享相同的 cookie。
【解决方案2】:

是的,只要域相同,您就可以这样做。您只需要将cookie路径设置为root即可。

Cookie cookie = new Cookie("cookie name ", "cookie value");
cookie.setPath("/");
response.setCookie(cookie);

现在该 cookie 将可供该域上的所有应用程序使用。

假设有两个应用程序

  • www.example.com/app1
  • www.example.com/app2

现在 app1app2 都可以使用此 cookie。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 1970-01-01
    相关资源
    最近更新 更多