【问题标题】:checking if session exist on another website检查会话是否存在于另一个网站上
【发布时间】:2012-08-12 22:45:01
【问题描述】:

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

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

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

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

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

只是一个想法会很感激。

感谢和问候

编辑

我已经完成了 在 domaintwo.com 中,否则我什至不会在 ajax 调用中收到 if session as 'needLogin' 的响应。

【问题讨论】:

    标签: php ajax cross-domain


    【解决方案1】:

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

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

    【讨论】:

    • 但是Facebook不喜欢btn点击吗?它检查用户是否登录 fb,然后才允许喜欢它。如果不是会话,知道他们用什么来获取它吗??
    • @luckycool 他们使用 Oauth 和 3rd 方 cookie。您的网站在 facebook 上有一个应用程序,您与该应用程序交谈以获取 facebook 数据。当用户喜欢某样东西时,喜欢的内容会发送到 Facebook,然后您的站点信息来自 facebook 而不是客户端。
    【解决方案2】:

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

    您可以在 Wikipedia 上开始您的研究:

    【讨论】:

    • 嗨施,谢谢,但我知道源策略,我已经实现了 在 domaintwo.com 上。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-22
    • 1970-01-01
    • 2011-03-06
    • 2011-12-29
    • 2018-04-04
    相关资源
    最近更新 更多