我的登录页面:example.com/login (root / public_html / login)
我的子域名:api.example.com (root / api)
当我使用AngularJS $ .http发出一个简单的GET请求时,它无法加载会话变量。直接加载页面工作正常,但是当使用Angular时它失败了(即使它在同一台服务器上并且只托管一个不同的子域,也会出现CORS错误)。
是否有可能对绝对路径(而不是相对路径)发出js请求会导致cors异常?
在public_html的.htaccess文件中,我有:
php_value session.cookie_domain .example.com
从$ .http加载文件:
if(!isset($_SESSION)) session_start();
if(!empty($_SESSION['username'])) {
echo "Working";
} else {
echo "Not finding username";
exit;
}
登录代码:
session_set_cookie_params(0, '/', '.example.com');
session_start();
$_SESSION['username'] = $query[0]['username'];
$_SESSION['email'] = $_POST['email'];
$_SESSION['image'] = $query[0]['image'];
$_SESSION['role'] = $query[0]['role'];
$_SESSION['banned'] = $query[0]['banned'];
$_SESSION['id'] = $query[0]['id'];
$_SESSION['ip'] = $_SERVER['REMOTE_ADDR'];
$_SESSION['useragent'] = $_SERVER['HTTP_USER_AGENT'];
setcookie(session_name(),session_id(),time()+604800,"/",".example.com");
header("Location: /"); exit;
编辑: api.example.com的doc目录是/ api而不是传统的/ public_html / api这会有所不同吗?
编辑:一旦我将root / api docs文件夹移动到root / public_html / api然后在JS中使用了相对路径,一切都解决了。