使用 ajax 设置子域的会话
Set the session of subdomain using ajax
我正在使用像 www.example.com 这样的域和像 sub.example.com 这样的子域。
我正在尝试调用 sub.example.com 的 Login
函数。
最后我无法设置 sub.example.com 的会话以供将来调用的函数使用。
我在我的子域中使用 CodeIgniter,我的根域只有一个 HTML 页面和原生 JavaScript。我想使用 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();
在 codeigniter
中,您不需要 session_start();
。只需加载 session
库,然后尝试。
将会话库加载为:
$this->load->library('session');//from models,controllers and view..
但是如果你在模型、视图和控制器之外..加载CI session
库如下:
1.First 创建 CI
的实例
$this->CI =& get_instance();
2.Then 加载库
$this->CI->load->library('session');
更多内容请看这里https://codeigniter.com/userguide3/libraries/sessions.html#destroying-a-session
我根据要求
使用Angular$httpProvider
设置header("Access-Control-Allow-Credentials: true");
[服务器端]和$http.defaults.withCredentials = true;
[客户端]解决了我的问题
并且不要忘记设置 header("Access-Control-Allow-Origin: www.example.com");
[服务器端] 我的根域以访问我的子域。
但是如果你有多个domains/sub-domains允许你可以使用下面的代码
$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");
}
了解更多信息Access-control-allow-credentials
我正在使用像 www.example.com 这样的域和像 sub.example.com 这样的子域。
我正在尝试调用 sub.example.com 的 Login
函数。
最后我无法设置 sub.example.com 的会话以供将来调用的函数使用。
我在我的子域中使用 CodeIgniter,我的根域只有一个 HTML 页面和原生 JavaScript。我想使用 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();
在 codeigniter
中,您不需要 session_start();
。只需加载 session
库,然后尝试。
将会话库加载为:
$this->load->library('session');//from models,controllers and view..
但是如果你在模型、视图和控制器之外..加载CI session
库如下:
1.First 创建 CI
的实例$this->CI =& get_instance();
2.Then 加载库
$this->CI->load->library('session');
更多内容请看这里https://codeigniter.com/userguide3/libraries/sessions.html#destroying-a-session
我根据要求
使用Angular$httpProvider
设置header("Access-Control-Allow-Credentials: true");
[服务器端]和$http.defaults.withCredentials = true;
[客户端]解决了我的问题
并且不要忘记设置 header("Access-Control-Allow-Origin: www.example.com");
[服务器端] 我的根域以访问我的子域。
但是如果你有多个domains/sub-domains允许你可以使用下面的代码
$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");
}
了解更多信息Access-control-allow-credentials