我使用 www.example.com 等域名和 sub.example.com 等子域名。
我试图调用sub.example.com的Login
函数。
最后,我无法设置sub.example.com的会话以便将来调用函数。
我在我的子域中使用CodeIgniter,而我的根域只有一个包含本机JavaScript的HTML页面。我想使用 sub.example.com 作为我所有子网站的终端。
我尝试将子域(CI)的配置更改为
$config['cookie_prefix'] = "";
$config['cookie_domain'] = ".example.com";
$config['cookie_path'] = "/";
$config['cookie_secure'] = FALSE;
以及我的www.example.com的index.php文件:
session_set_cookie_params(0, '/', '.example.com');
session_start();
答案 0 :(得分:0)
在codeigniter
中,您不需要session_start();
。只需加载session
库,然后尝试。
将会话库加载为:
$this->load->library('session');//from models,controllers and view..
但是如果你在模特,视图和控制器之外......加载CI session
库如下:
1.首先创建CI的实例
$this->CI =& get_instance();
2.然后加载库
$this->CI->load->library('session');
有关详情,请参阅此处https://codeigniter.com/userguide3/libraries/sessions.html#destroying-a-session
答案 1 :(得分:0)
我根据请求使用Angular header("Access-Control-Allow-Credentials: true");
设置$http.defaults.withCredentials = true;
[SERVER-SIDE]和$httpProvider
[CLIENT-SIDE]解决了我的问题
并且不要忘记设置我的根域header("Access-Control-Allow-Origin: www.example.com");
[SERVER-SIDE]以访问我的子域。
但如果您有多个域/子域,则可以使用以下代码
$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");
}