我很困惑PHP会话处理。这是场景:PHP会话和iFrame
客户端浏览器访问server-a.domain-1.com,它将server-b.domain-2.com上的页面内容加载到iframe中。
客户端从服务器a获取会话cookie;可以说它的值是123.如果我在服务器b上回显session_id(),它会在iframe中显示一个不同的会话ID,比如456,但是在客户端没有cookie。当然,如果我直接加载server-b页面,我会得到它的cookie,然后有2个会话cookie,123和456.
我不明白这是什么。我删除所有的cookie并加载服务器a的页面,所以现在我有它的cookie(123)。在iframe中呈现的页面显示会话ID 456,但其Cookie不在客户端上。现在,每次我在服务器a上重新加载页面时,server-b都显示相同的session_id,但客户端永远不会获取它的cookie。
那么,如果没有cookie,server-b如何知道这是相同的会话?
从我的阅读中,我明白会话可以动态添加为url参数,如果cookie不可用,但这需要session.use_trans_sid在php.ini中设置,而不是。地址栏中也没有证据表明发生了这种情况。
我很感谢任何有关这里实际发生的事情。
我知道我可以设置会话共享,但这不是问题的本质。如果服务器b在每次将页面加载到iframe时加载了另一个会话,我都会理解它。但事实并非如此,它每次都有相同的会话。唯一合乎逻辑的答案是server-b正在将会话与server-a的会话相关联,尽管我没有在代码中做任何事情来实现这一点。 – johnoathome
顺便说一句,我是比较新的SO,我不确定为什么我的问题被拒绝投票?如果这是一个人们开始学习的论坛,那么仅仅因为有人认为它是一个愚蠢的问题就会使投票产生反作用。 – johnoathome