Codeigniter设置没有前导'.'关于域值


Codeigniter Set a Cookie without a leading '.' on domain value

我正在尝试将一个新的Codeigniter支持的登录区域集成到托管在子域上的遗留(第三方)PHP站点中。

当我在CI区域设置一个名为'logged_in'的cookie时(打算由CI部分和站点的其他部分使用),Codeigniter总是添加一个前导'。'到值。

问题是遗留站点设置和删除它的cookie域'dev.example.co.uk'。在通过遗留站点注销时,当它没有销毁'logged_in' cookie(可能是因为它设置在不同的域)时,问题就会出现。

我已经尝试更改CI配置设置从默认的空白:

$config['cookie_domain']    = "";

到实际域:

$config['cookie_domain']    = "dev.example.co.uk";

或者在创建时显式地设置:

$this->input->set_cookie('logged_in', 'true', '86500', 'dev.example.co.uk');

或:

$this->input->set_cookie('logged_in', 'true', '86500');

但每当我检查cookie在Chrome的域值总是显示为'.dev.example.co.uk'。

我意识到CI正在添加'。,以最大限度地与旧浏览器兼容(如php.net/manual所述),但对于这个特定(尽管不寻常)的场景,我需要没有。

有没有人知道一种方法来防止CI添加前导'。到域?

CodeIgniter不会这样做,它要么是setcookie()本身,要么只是您的浏览器假设cookie域。如果你想确定两者中的哪一个-检查HTTP响应头并查看'Set-Cookie'。

更新:

看了PHP源代码后,我可以肯定地说,这只是你的浏览器那样显示(或处理)cookie。