我在CakePHP项目的CakePHP中有一个方法,用于通过WordPress站点上的AJAX调用远程登录用户。该方法在通过Firefox调用时运行得非常完美,但是当我试图通过AJAX或直接从IE8或Safari的浏览器调用它时,它根本不会登录。Auth->login()方法返回true,好像一切都很好,但它没有登录。有什么想法吗?
function remoteLogin($key)
{
# this method should only be called via AJAX
$this->layout = 'ajax';
$matching_key = '***';
if($key == $matching_key)
{
# auto-login service account
$data['User']['username'] = '***';
$data['User']['password'] = $this->Auth->password('***');
$this->Auth->login($data);
}
}注意:--我现在已经确认,这种方法在中也不起作用。我完全糊涂了。
发布于 2009-06-09 23:45:14
您可能需要检查您的cookie,并确保它们按照您的预期被传递。Fiddler在了解这些AJAX问题时看到http流量是很有帮助的。
www.domain.com和domain.com要去同一个地方吗?如果是这样的话,这可能与CakePHP / IE问题有关。
删除任何域级别的cookie,并查看它是否有效。
在IE中,任何域cookie都会比子域cookie更精确。因此,如果您有一个cookie转到domain.com,然后再转到www.domain.com,您可以重置会话登录,一整天都注销,但是IE将忽略www.domain.com cookie并继续使用原始的domain.com cookie。我为一个旧版本的Cake编写了一个补丁,它允许您设置/强制将cookie作用域设置为domain.com,即使当他们以www.domain.com的身份访问站点时也是如此。
发布于 2009-07-09 07:26:38
现在不要讨论IE8,但是Safari确实阻止了跨域ajax,甚至在同一顶级域中的“兄弟姐妹”之间也是如此。例如,您不能让app.example.com使用来自helppages.example.com的ajax加载div。忘了cookie吧,我说的只是使用ajax加载的普通html。
发布于 2013-07-16 09:30:52
,
https://stackoverflow.com/questions/967774
复制相似问题