javascript - 如何在不使用 cookie 且不编写后端代码的情况下跨页面跟踪用户?
问题描述
我需要在不使用 cookie 的情况下跨页面跟踪用户。我无权访问 Web 服务器,因此我的解决方案必须从每个页面可以加载的一些 JS 运行。
目前我正在使用 IP + 时间戳的可怕解决方案。
所以他的导航可能是这样的:
13:21:11 /index.php
13:21:15 /shop.php
13:21:35 /blue-shirt-1.php
目前要跟踪他的会话,我有一些逻辑,例如在过去 10 分钟内导航的唯一 IP +。
如果每个用户访问该站点一次,并且只访问 10 分钟,或者访问非常少,也访问 10 分钟,这很好。但我需要能够理解这两种情况:
如果他在 /blue-shirt-1.php 上坐了半个小时,然后点击了另一个链接,那应该被认为是同一会话的一部分。
如果他关闭浏览器或导航到不同的网站,然后在 5 分钟后返回,则应将其视为不同的会话。
有没有办法做到这一点?
请注意,由于 GDPR 合规性问题,我无法使用 cookie。
任何想法都非常感谢。
解决方案
基于 cookie 的会话的替代方案可能是基于 URL 的会话。
您可以生成自己的 sessionid 并将它们用作参数index.php?id=XXX
,如果没有给出 id,您可以生成一个新的。
您还应该查看基于 PHP URL 的会话管理:http ://www.php.net/manual/en/session.configuration.php#ini.session.use-trans-sid
请注意,在这种情况下,用户可以伪造一个新的 sessionid 或使用其他用户的 id。为此,您可以使用用户 ip 跟踪 id 并在离开一页片刻后保留它们(例如通过使用 onbeforeunload),如果给定的 sessionid 不存在,您也可以生成一个新的...
推荐阅读
- python - 如何从 XML 文件中自动获取相同类型的每个对象?
- python - 如何在不改变python中元素位置的情况下对列表列表中的元素进行排序?
- prometheus - 如何使用 promQL/metricsQL 获取 Prometheus/VictoriaMetrics 中收到的最后一个值
- javascript - 无法使用 FS npm 模块 nodejs 访问网络驱动器上的文件
- php - Laravel belongsToMany - 获取所有类别的父级
- javascript - 如何过滤/循环嵌套数组
- java - 是否可以挂钩线程创建?
- typescript - .d.ts 文件中的响应
- java - 手动将节点添加到列表与使用 addNode 方法有什么区别?
- php - 你如何只允许使用 PHP 函数删除字符串中的第一个标签和所有其他标签?