【问题标题】:How to create sessions using client data without cookies?如何使用没有 cookie 的客户端数据创建会话?
【发布时间】:2015-09-11 12:22:56
【问题描述】:

我正在向客户端提供单个播放列表文件。

客户端定期向我的服务器发送一个新请求,请求播放列表文件。例如每 10 秒一次。

我需要在服务器端识别每个客户端。

我的第一次尝试是使用 cookie。 如果客户端确实支持 cookie,它会很好地工作。

但我需要能够识别所有客户端,即使它们不支持 cookie。

我能否在不使用 cookie 而仅使用例如 IP 和标头数据的情况下创建会话?

如果是这样,我该怎么做?

要求:

  1. 客户端使用的 URL 不能更改。客户端不能添加任何 除了请求播放列表文件之外,客户端无法执行任何操作。
  2. 向服务器发出一个请求就足够了 识别用户。
  3. 所有请求都应该提供足够的数据,以便 服务器知道。

我目前正在使用express-session

我假设我可以通过创建像 express-session 这样的中间件来获得我想要的东西。但我不确定我能做到这一点。

【问题讨论】:

    标签: javascript node.js session cookies express


    【解决方案1】:

    尝试使用evercookie

    或者这个。它使用 Etag(虽然,evercookie 也使用 etag 作为其方法之一,但这个专门使用它。)

    cookieless cookie

    【讨论】:

      【解决方案2】:

      user1551066 的建议是非常可靠的答案(很棒的发现!)

      但请记住,当您遇到极端情况时,收益会递减。如果您只是显示需要 cookie 的错误,那么 v1.0 可以接受吗?

      Evercookie 和 cookieless cookie 可能会处理大多数其他情况......但有被挫败的方式。 Evercookie 可以通过使用隐私浏览来停止。 Cookieless cookie's approach 可以通过更改用于创建指纹的值的隐私插件来击败。这些存储尝试也可能被快乐路径用户(他们启用了 cookie)认为是侵入性的。

      从专业的角度来看,我建议首先关注快乐的路径,并且只为禁用 cookie 的人显示错误。一旦你的代码启动并运行起来,你就可以重新审视那些人的经验。

      【讨论】:

        猜你喜欢
        • 2017-02-21
        • 1970-01-01
        • 2012-05-15
        • 2019-05-30
        • 2023-04-02
        • 2023-03-09
        • 1970-01-01
        • 1970-01-01
        • 2022-01-08
        相关资源
        最近更新 更多