java - Servlet 充当代理 : How to forward the session?

标签 java session servlets

我不太确定我想要实现的要求的可行性,但情况如下:

  • 我创建了一个充当代理的 Servlet。它接收 RESTful 调用,然后调用远程服务器(节点)上的另一个 RESTful 服务。
  • 转发是通过 HTTPClient 实现的,而不是通过请求调度程序实现的。我基本上向远程服务器发出一个新的 HTTP 请求。
  • 当第一个服务器(代理服务器)收到调用时,请求 (HttpServletRequest) 就有一个与其关联的 session 。 HTTPSessionisNew() 属性为 false。
  • 当调用被转接并且远程服务器收到调用时, session 将成为一个全新的 session 。

我基本上也在尝试找到一种将 session 转发到远程服务器的方法。

更准确地说: 是否可以简单地从 HttpServletRequest 获取 session 并将其放入新创建的 HTTP 请求的 session 中(通过 HTTPClient)?

最佳答案

这取决于您的远程 WS 如何维护 session 。例如,如果它使用cookie(Tomcat 在其他技术中这样做),那么转发传入的 header 应该可以帮助您实现这一点(确保您提到您接受cookie,但我认为 HTTPClient 默认情况下会这样做)。 现在,如果它基于 URL 中的参数,那么您应该尝试重现该行为。

关于java - Servlet 充当代理 : How to forward the session?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9642546/

相关文章:

java - Java 中文件下载的文件夹浏览对话框

java - 当我的程序在BlueJ中的文本 'crashing'之后遇到 "%.2f"时,它是 "Gross Pay : "

java - 如何在jtable中动态设置行的颜色?

Django 和 session 状态消息

php - 注销后销毁 session 文件

java - JSF Servlet Arch 需要帮助

java - 如何使用数据库值自动填充jsp文本框而不使用按钮或提交?

java - 从 Java 中检索 MYSQL 数据库结构信息

java - LineNumberReader setLineNumber 不起作用

ios - Xcode导出/上传错误: Your session has expired.请登录