【发布时间】:2014-06-07 20:14:23
【问题描述】:
我有一个页面 m.mydomain.com/login.php (http/80) 页面使用 jquery.ajaxForm 发布/获取到 auth.mydomain.com/login.php (https/443)
header('Access-Control-Allow-Origin: m.mydomain.com');
ini_set('session.cookie_domain', '.mydomain.com');
session_start();
/**Login and db stuff there*/
if($allowed)
{
$_SESSION['check_login'] = true;
print 1;
}
else
{
print 0;
}
所以在 login.php 中我得到了 ajax 调用“1”的结果,但在访问 $_SESSION 时我得到一个空数组。
代码:
ini_set('session.cookie_domain', '.mydomain.com');
session_start();
print_r($_SESSION);
在浏览器中(使用 GET 请求)定期调用 auth.mydomain.com/login.php (https/443) 会导致在 m.mydomain.com/login.php (http/80) 上登录
【问题讨论】:
-
域和子域是否运行在同一台服务器上?还要确保每个 PHP 会话 cookie 名称相同。
-
是的域和子域在同一台服务器上运行。我只是手动设置了一个会话 cookie 名称,我可以读到有一个 cookie 可供读取,但 $_SESSION 是空的
-
请求是通过 ajax 的吗?如果是这样,您需要确保在
xhr对象中将withcredentials设置为true。 -
感谢你成功了
-
我会将其添加为答案,然后您就可以关闭此问题。
标签: javascript php ajax session