Php 使用ajax设置子域的会话

Php 使用ajax设置子域的会话,php,codeigniter,session,subdomain,Php,Codeigniter,Session,Subdomain,我正在使用一个像www.example.com这样的域和一个像sub.example.com这样的子域 我正在尝试调用sub.example.com的Login函数。 最后,我无法设置sub.example.com的会话来调用未来的函数 我在我的子域中使用CodeIgniter,我的根域只有一个带有本机JavaScript的HTML页面。我想使用sub.example.com作为我所有子网站的端点 我尝试将我的子域(CI)的配置更改为 以及我的www.example.com的index.php文

我正在使用一个像www.example.com这样的域和一个像sub.example.com这样的子域

我正在尝试调用sub.example.com的
Login
函数。 最后,我无法设置sub.example.com的会话来调用未来的函数

我在我的子域中使用CodeIgniter,我的根域只有一个带有本机JavaScript的HTML页面。我想使用sub.example.com作为我所有子网站的端点

我尝试将我的子域(CI)的配置更改为

以及我的www.example.com的index.php文件:

session_set_cookie_params(0, '/', '.example.com');
session_start();

codeigniter
中,您不需要
session_start()。只需加载
会话
库,然后重试

将会话库加载为:

$this->load->library('session');//from models,controllers and view..
但如果您在模型、视图和控制器之外,请按如下方式加载CI
session
库:

1.首先创建CI实例

$this->CI =& get_instance();
2.然后加载库

$this->CI->load->library('session');

有关更多信息,请参见此处

我通过设置
标题(“访问控制允许凭据:true”)解决了问题[服务器端]和
$http.defaults.withCredentials=true[客户端]根据请求使用Angular
$httpProvider

同时也不要忘记设置
标题(“accesscontrolalloworigin:www.example.com”)[服务器端]我的根域以访问我的子域

但如果您有多个域/子域可供使用,则可以使用以下代码

$http_origin = $_SERVER['HTTP_ORIGIN'];

if ($http_origin == "http://www.domain1.com" || $http_origin == "http://www.domain2.com" || $http_origin == "http://www.domain3.info")
{  
    header("Access-Control-Allow-Origin: $http_origin");
}

有关更多信息

是的,我了解这种情况,我想做的是使用根域设置我的子域的会话。但是登录功能之后。。并尝试对我不再登录的子域使用其他功能。使用一个域到另一个域的会话不是一个好方法?如果先检查根域和子域…这些域是否共享相同的CI系统文件?为什么这不是一个好方法?那么,对于我的情况,可能的解决方案是什么呢?我只想通过ajax使用根域设置子域的会话。因此,对于对子域函数的每次调用,其都已登录并有权访问函数。如果两个域都包含不同的CI系统文件,则无法使用一个域到另一个域的会话。因此,您必须运行共享相同CI系统文件的多个应用程序。。
$http_origin = $_SERVER['HTTP_ORIGIN'];

if ($http_origin == "http://www.domain1.com" || $http_origin == "http://www.domain2.com" || $http_origin == "http://www.domain3.info")
{  
    header("Access-Control-Allow-Origin: $http_origin");
}