【问题标题】:Losing PHP sessions in iFrame with Chrome & IE使用 Chrome 和 IE 在 iF​​rame 中丢失 PHP 会话
【发布时间】:2012-06-06 03:29:00
【问题描述】:

问题:

我在将会话变量从父页面传递到 iFrame 页面以及在 Chrome 和 IE 中调用 PHP 文件的 AJAX 时遇到问题。不过,它似乎在 FF 和 Safari 中有效。

环境:

我将 Wordpress 作为我的“门户”。我的 Wordpress 页面之一是“仪表板”。该仪表板针对 CRM Web 服务发出 AJAX 请求以呈现 JSON 数据。 Wordpress、仪表板文件和 CRM 都在同一个域中。 “www.domain.com/wordpress”是 Wordpress 域,“www.domain.com/dashboard/dashboard.php”是通过 iFrame 包含在 Wordpress 页面上的仪表板文件,“www.domain.com/CRM” /webservice.php" 是我正在对其进行 AJAX 调用的 Web 服务文件。

方法:

用户使用 LDAP 登录 Wordpress。我从 Wordpress 中获取用户名并将其转储到 $_SESSION['WPUsername'] 变量中,作为 Wordpress 登录功能的扩展。然后,当我的仪表板加载到 iFrame 中时,它会通过 jQuery $.get() 向我的 CRM Web 服务文件发出请求。 webservice.php 接收请求,然后使用$_SESSION['WPUsername'] 会话变量在内部查询适当的数据并返回响应。

问题:

Firefox 运行良好。当webservice.php 请求时,IE 和 Chrome 似乎认为$_SESSION['WPUsername'] 不存在。

我错过了什么?

【问题讨论】:

  • 请注意...除了在同一个域上之外,所有内容都在同一台服务器上。
  • 另一个停止使用 (i)frames 的好理由。
  • 大型项目的临时解决方案,将取消 iFrames。
  • 实际上是 PHP 无法识别会话变量。如果我不得不猜测,您的会话 cookie 仅限于您网站中的某个路径,不会传递到其他子目录。
  • @NickCaballero 你的评论绝对是无稽之谈。

标签: php internet-explorer session google-chrome


【解决方案1】:

我对我的 PHP 配置和网站进行了所有建议的更改。我将 php.ini 中的 cookie 路径设置为“/”,并在 iFrame 中使用了完整的子域路径(“www.domain.com/dashboard/dashboard.php”)。它现在似乎工作正常。

另一方面,我刚刚使用 OpenAM 作为 IdP 和 SimpleSAMLphp 作为 SP 实现了 SSO。不再需要会话 cookie 来管理身份验证,组件之间传递的所有数据现在都使用 Web 服务完成。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-11-08
    • 1970-01-01
    • 1970-01-01
    • 2013-11-03
    • 1970-01-01
    • 2013-08-10
    相关资源
    最近更新 更多