1

我有一个 PHP 项目,它的多个子域(a.domainone.com、b.domainone.com、c.domainone.com)托管在另一台服务器上,另一个主域 domaintwo.com 托管在另一台服务器上。

目的:用户必须登录 domaintwo.com 域才能访问第一个域的子域。

用户移动:用户访问 a.domainone.com > 用户被要求点击进入 > 现在进入有一个 ajax 功能来检查用户是否登录到 domaintwo.com(响应为需要登录或登录)> 如果不是domaintwo 的弹出窗口打开,成功登录时它关闭回显:loggin succesfull 继续并立即回车

问题:登录后,当用户按回车键 > 相同的弹出窗口打开 > 回显登录已经完成(已进行验证以检查会话是否已经存在)> 因此,当检查回显会话变量时,在 a.subdomain.com 上发现其空白,但直接转到在 domaintwo.com 登录处理程序的 php 页面上,它正确地回显了会话变量的值。

所以我检查了一下,ajax 响应总是'needlogin' ....!!!

只是一个想法会很感激。

感谢和问候

编辑

我已经完成了 < ? php header('Access-Control-Allow-Origin: *'); ? > 在 domaintwo.com 中,否则我什至不会在 ajax 调用中收到 if session as 'needLogin' 的响应。

4

2 回答 2

1

您需要浏览器上会话 cookie 中的 session_id。幸运的是(不幸的是)客户端浏览器不允许访问来自不同域的 cookie。由于无法获取会话cookie,因此无法获取会话ID,因此无法跨域抓取会话。

如果两个站点都在同一台服务器上,并且您可以直接访问会话存储,并且您没有重新生成会话 ID,您可能会做一些阴暗的事情,例如在一个站点上读取 session_id 并将其传递给下一个站点站点,然后根据id手动打开会话文件并读取它...

于 2012-08-12T14:35:32.267 回答
0

如果您只需要了解正在发生的事情:您正在访问来自另一个域的数据,那么 Web 浏览器的跨域策略就会启动。

您可以在维基百科上开始您的研究:

于 2012-08-12T14:35:19.070 回答