【发布时间】:2015-07-01 23:07:23
【问题描述】:
我有一个动态生成 JavaScript 的 PHP 脚本。我包含它,就像您包含任何外部 JS 文件一样(我使用 mod rewrite 给它一个 JS 扩展名并设置 JS 内容标题)。
在某些情况下,我希望能够在同一页面上多次包含此 JS 文件(通过 URL 的查询字符串传递各种不同的 ID)。示例:
<script src="script.js?id=3982"></script>
在第一个页面视图中,我注意到正在生成三个唯一的会话 ID(每个请求一个)。似乎要包含的最后一个脚本是生成用户保留的最终会话 ID 的脚本。从那以后,一切正常。
注意:session_start() 包含在每个脚本的顶部。
【问题讨论】:
-
嗯,是的,因为浏览器将尝试并行加载多个脚本,并且还没有会话 cookie,它会并行发送几个无 id 请求,这将全部接收独立的会话 ID。除了取消并行请求之外,没有真正的解决方案。意思是,只包含 one 脚本,它使 one 初始连接以接收 cookie,然后包含其他脚本。
-
...那个,或者一些真正的向后弯曲,其中脚本包含自己的一些稳定 id (
script.js?id=3982&client_id=29321934),然后使用它来协调后端的会话 id。 -
@deceze 谢谢!将其粘贴到答案中,我会将其标记为已接受。因为它不是用于用户身份验证或任何东西,我可能只是将用户代理和 IP 散列在一起或其他东西。
-
如果您依赖 IP,您将得到误报,即使您另外考虑了用户代理。
-
@deceze 这些误报的可能性有多大?