我们如何在维持drupal会话的同时使用IE和XDomainRequests?

时间:2012-02-16 22:51:03

标签: internet-explorer drupal sessionid xdomainrequest

IE9的XDomainRequest不发送身份验证或cookie(http://blogs.msdn.com/b/ieinternals/archive/2中的#5} 010/05/13 / xdomainrequest-限制-limitat 离子 - 和 - workarounds.aspx)。

我们需要在经过身份验证的/会话上下文中进行所有数据请求。

一个通用的想法是将会话令牌显式添加到XDomainRequest,然后在后端使用drupal的sess_read()来检索会话。 但是,api建议不要直接调用sess_read()引用各种不良副作用(http://api.drupal.org/api/drupal/includes%21s ession.inc/6)。

是否有人成功使用此功能或找到另一种解决方法?

1 个答案:

答案 0 :(得分:0)

这似乎是一个解决方案:

如果会话上下文丢失(由于只包含$ sessionKey的匿名请求),那么我们可以使用以下命令检索用户会话/用户ID:

$userFetched = db_fetch_object(db_query("SELECT u.*, s.* FROM {users} u INNER JOIN {sessions} s ON u.uid = s.uid WHERE s.sid = '%s'", $sessionKey));

//assuming sessionKey was valid, then $userFetched->uid will contain the user's id.