1

似乎 GET 请求中的 Parameter-Name 代表 SessionID(如 Tomcat 中的 jsessionid=XXXXXXXXXXXXXXXXXXXXXXXXXX)在 servlet-spec 中没有标准化?如何获取 SessionID 的(Servelt Container Specific)名称?(至少在 Websphere 中似乎有可能更改 SessionID-Parameter-Name 的名称)

=> 潜在的问题是,我需要在 servlet ALWYAS 中使用会话 ID 对 URL 进行编码。但似乎“response.encodeURL()”方法仅在禁用 Cookie 时才执行此操作(=>因此使用 URL 重写和 URL 中的 sessionID)。

在 servlet 中始终使用会话 ID 对 URL 进行编码的替代方法是什么?正如第一个问题所暗示的那样,我想自己构建 sessionid,但因此我需要 sessionID-Parameter Name 但是似乎没有标准化,所以我需要从某个地方获取 Parameter-Name ...)

更新:目的是保留 Servlet-Container 提供的 SessionManagement 功能,而不是完全关闭它。我需要将回调 URL 传递给我希望始终包含 SessionURL 的第三方系统。所以我只想用 sessionID对这个单一的 URL 进行编码,以尽量减少任何安全问题......

非常感谢简

4

1 回答 1

3

jsessionid实际上不是请求参数,它被编码到 URL 本身,然后在到达控制器之前被容器解码和删除。jsessionid 本身的值可以从HttpSession.getId().

如果你想阻止 Tomcat 使用 cookie,那么你可以context.xml在 下提供一个 tomcat 特定的文件WEB-INF,包含如下内容:

<Context cookies="false" path="/path/to/my/webapp">
</Context>

这将禁用该 webapp 的所有 cookie,然后 tomcat 应该自动将所有会话 ID 编码到 URL 上。

于 2009-11-12T14:26:51.850 回答