为什么Magento每次会话使用2个cookie?

And*_*ann 15 security cookies zend-framework privacy magento

出于数据安全和隐私的原因,我想知道为什么Magento在一个前端会话中使用两个cookie.

我所知道的是,其中一个正在进入Mage_Core_Model_Cookie::set(..),而另一个正在进入Zend_Session::expireSessionCookie(),但我似乎无法弄清楚它们的用途.

我想不出有什么理由为什么人们需要为同一个域提供第二个cookie.

Jos*_*tey 6

我打算把这个称为残留代码.Varien在很大程度上依赖于Zend Framework作为Magento的基础,因此很多类(例如Zend_Session)被用作Magento实现的父类.

标记为"前端"的Varien-set cookie为您访问的站点的部分命名(例如,如果您通过后端登录,则将有一个单独的"admin"cookie),而Zend cookie似乎是全局的.

另请注意,我能够删除Zend cookie而没有任何明显的有害影响(我的登录会话和购物车仍然可访问,并且cookie不会立即被替换).


And*_*ann 5

我能够通过颠倒session_start()调用的顺序和设置cookie的语句来解决这个问题Mage_Core_Model_Session_Abstract_Varien::start(..).这两行现在看起来像这样:

$cookie->set(session_name(), $this->getSessionId());
session_start();
Run Code Online (Sandbox Code Playgroud)

它现在只创建一个cookie,它似乎没有任何副作用.

BTW:我假设其他cookie不是在Zend_Session中创建的,而是两者都来自Mage_Core_Model_Session_Abstract_Varien::start(..).