我有一个PHP项目,它的多个子域(a.domainone.com,b.domainone.com,c.domainone.com)托管在另一台服务器上,另一个主域 domaintwo.com 在另一台服务器上。
目的:只有当用户登录 domaintwo.com 域时,用户才能访问第一个域的子域。
用户的移动:用户访问 a.domainone.com>用户被要求点击立即输入>现在有一个 ajax 函数来检查用户是否已登录 domaintwo.com(响应为 needlogin 或 logindone)>如果没有打开域二的弹出窗口,成功登录后它会关闭 回声: 登录成功 继续并立即按回车键
问题:登录后,当用户点击输入>相同的弹出窗口打开>回显登录已经完成(hav put 验证以检查会话是否已存在)>因此,当选中回显会话变量时,a.subdomain.com 发现其空白,但是当直接转到登录处理程序的 php 页面上时 domaintwo.com 它会正确回显会话变量的值。
所以我检查了一下,ajax 响应总是"需要登录"......!!
只是一个想法会很感激。
感谢和问候
编辑
我已经完成了 否则 domaintwo.com 我甚至不会收到 if 会话的响应作为 ajax 调用中的"需要登录"。
浏览器上会话 cookie 中的session_id。 幸运的是(对您来说不幸的是),客户端浏览器将不允许访问来自不同域的cookie。 由于您无法获取会话 cookie,因此无法获取会话 ID,因此无法跨域抓取会话。
如果两个站点都在同一台服务器上,并且您可以直接访问会话存储,并且您没有重新生成会话 ID,您可能会做一些可疑的事情,例如读取一个站点上的session_id并将其在 get 参数中传递给下一个站点,然后根据 id 手动打开会话文件并读取它......
如果您只需要了解正在发生的事情:您正在访问来自另一个域的数据,因此 Web 浏览器的跨域策略会启动。
您可以在维基百科上开始您的研究:
- http://en.wikipedia.org/wiki/Same_origin_policy
- http://en.wikipedia.org/wiki/Cross-origin_resource_sharing