【问题标题】:How to return a session id from a http server如何从 http 服务器返回会话 ID
【发布时间】:2016-12-31 23:41:18
【问题描述】:

我遇到过许多用 Java 实现简单 http 服务器的示例。这个适合我的需求:http://www.rgagnon.com/javadetails/java-have-a-simple-http-server.html

但是,我找不到如何从这样一个简单的 http 服务器生成、返回和维护会话 id 的示例。

这可能吗?有没有办法修改上面提到的示例代码以包含此功能?

谢谢。

【问题讨论】:

  • 通常通过只是一个标题的 cookie。对服务器的第一次调用会创建一个 cookie 值(随机字符串)并将 cookie 标头添加到响应中。 cookie 值是保存会话数据的 Map 的键。浏览器会在后续调用中自动发送 cookie 标头,并可用作请求标头。应该有一些合理的过期时间,因此如果未收到请求,则将删除过期 cookie 值的 Map 条目。

标签: java session httpserver


【解决方案1】:

一旦 HTTP 是无状态的应用协议,它本身就没有会话支持。所以你需要自己实现它。

例如,在 Tomcat 等 servlet 容器上,有一个名为 JSESSIONID 的 cookie 会生成并存储在浏览器中。客户端在每次请求时将 cookie 发送回服务器。一旦每个客户端都有不同的 cookie,服务器就可以识别客户端会话。

如果不允许使用 cookie,则将参数 JSESSIONID 添加到每个请求的 URL 中。这种技术称为 URL 重写。

有一个问题,不是专门针对 Java HTTP 服务器的,它有这个问题的实现细节。

HTTP Session Tracking

【讨论】:

  • 那么,如果我理解正确的话,我可以通过交换带有嵌入会话 ID 的 cookie 来实现这一点?
  • 谢谢@Leonardo。您发布的链接非常有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-12
  • 1970-01-01
相关资源
最近更新 更多