PHP在跨源请求上设置Cookie

时间:2019-03-05 09:39:15

标签: php cookies cross-domain php-7.2

我有一个问题。我想用另一个域加载网页。例如:

http://childdomain.com/index.php?name=unique_name从以下位置请求文件: http://parentdomain.com/fileloader.php?name=unique_name

这是代码:

$current_url = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$encoded_url = urlencode($current_url);
$config = file_get_contents('https://parentdomain.com/fileloader.php?name='.$encoded_url);

我必须在父域中保存该用户请求的文件,因为当用户再次从另一个站点(例如http://anotherchilddomain.com/index.php?name=unique_key)请求时,我必须返回相同的文件,而不进行修改。

我的Cookie设置器无法正常工作。我无法从http://parentdomain.com收到Cookie。这是我的Cookie设置器:

function getUserID(){
    // echo $_COOKIE['usr'].'sdd';
    if(!empty($_COOKIE['usr'])) {
        $user_id = $_COOKIE['usr'];
    } else {
        $user_id = generateRandomNumericString(7);
    }
    return $user_id;
}


function setUserCookie($user_id, $ad, $host){
    $data = $user_id.$ad['unique_key'].$ad['country_code'].substr($host, 0, 6);

    setcookie('usr',  $user_id, time()+90*24*60*60, '/', 'parentdomain.com', true);
    setcookie('data', $data, time()+90*24*60*60, '/', 'parentdomain.com', true);
    return [
        'user_id' => $user_id,
        'data' => $data
    ];
}

0 个答案:

没有答案