【问题标题】:"Simultaneous" requests generate new PHP session ID“同时”请求生成新的 PHP 会话 ID
【发布时间】: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&amp;client_id=29321934),然后使用它来协调后端的会话 id。
  • @deceze 谢谢!将其粘贴到答案中,我会将其标记为已接受。因为它不是用于用户身份验证或任何东西,我可能只是将用户代理和 IP 散列在一起或其他东西。
  • 如果您依赖 IP,您得到误报,即使您另外考虑了用户代理。
  • @deceze 这些误报的可能性有多大?

标签: php session


【解决方案1】:

嗯,是的,因为浏览器将尝试并行加载多个脚本,并且还没有会话 cookie,它会并行发送几个无 id 请求,这些请求都将接收独立的会话 ID。除了取消并行请求之外,没有真正的解决方案。意思是,只包含 one 脚本,它使 one 初始连接以接收 cookie,然后包含其他脚本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-25
    • 2013-03-24
    • 2015-06-28
    • 2012-07-21
    • 1970-01-01
    • 2018-07-31
    • 2011-03-20
    • 2017-03-27
    相关资源
    最近更新 更多