跨域共享会话

时间:2018-03-23 09:23:18

标签: php session session-variables session-cookies

好的..我有两个域example.com和example.net,它们共享相同的代码空间和会话。问题是当用户更改语言时,域应该更改,当发生这种情况时,所有会话数据都会丢失。我想在此之前做一个ajax调用,所以我可以改变会话。 以下是用于初始化会话的代码。

<?php 
    ini_set('session.use_only_cookies', 'Off');
    ini_set('session.use_cookies', 'On');
    ini_set('session.use_trans_sid', 'Off');
    ini_set('session.cookie_httponly', 'On');


    session_set_cookie_params(0, '/');
    session_start();
    session_id($_POST['session_id']);


    header('Content-Type: application/json');
    $data = array('session_id' => session_id());
    echo json_encode($data);

我尝试创建一个独立脚本来处理ajax调用,但它无法正常工作。

{{1}}

在两个域之间切换时,不会保留会话。 有线索吗?

1 个答案:

答案 0 :(得分:1)

这是网络浏览器的安全功能 - 会话使用附加到域的cookie,浏览器不会将此cookie发送到其他域。

当您控制两个域时,您可以通过在URL中包含身份验证信息来实现此目的。这是一个复杂的话题。您可以自制一些可行的东西,但如果您不熟悉安全问题,最好使用现成的单点登录解决方案。