Eu tenho três sites em uma instalação Magento, cada um com seu próprio domínio.
Agora, devido à segurança do navegador da web, você não pode acessar cookies de outro domínio, nem sessões.
De alguma forma, preciso passar dados temporários entre dois repositórios diferentes com domínios diferentes.
Meu caso de uso específico:
Estou usando o GeoIP para acionar um redirecionamento para a loja de países correta, mas também preciso substituí-lo manualmente. Agora, no momento, estou tendo o problema em que estou substituindo manualmente na loja atual por um cookie; no entanto, quando sou redirecionado para a outra loja, não há cookie na outra loja, então ele volta e procura os usuários loja baseada em GeoIP. No entanto, isso cria um loop infinito redirecionando também entre lojas.
Isso é feito descobrindo o código do site da loja em que quero usar index.php
um módulo personalizado e executando o Magento com o código correto. Isso lida com todos os redirecionamentos etc para mim, então.
fonte
Respostas:
Você pode compartilhar o
frontend
cookie entre o site magento e domínios diferentes usando a solução ainixon.me/set-cookie-on-cross-domains .Você precisa criar um
cookies.php
arquivo com o seguinte códigoe no modelo magento você precisará adicionar o seguinte código após a
<body>
tagfonte
Basta redirecionar com
?SID=yourSessionId
e você pode usá-lo na outra visualização da loja.fonte
\Mage_Core_Model_Session_Abstract::setSessionId()
basta verificar quando o ID da sessão está definido e configurá-lo.Apenas verifique se
Use SID in frontend
está ativado.Qualquer ...
Mage::getUrl()
$this->_redirectUrl($url);
ouMage::app()->getFrontController()->getResponse()->setRedirect()
Em seguida, conterá o respeito
SID
.Se você estiver usando
files
para armazenamento de sessão, verifique se o diretório é comumsymlinked
; se você estiver usando Memcache / Redis / DB, isso não é uma preocupação.-
Observe que existem muitas maneiras simples de lidar com o redirecionamento GeoIP mais além do Magento. Você pode fazer isso no nível do servidor da web (verificando a presença do respectivo cookie "sem redirecionamento").
fonte
No seu administrador, vá para Configuração> Web> Sessão> Usar SID no Frontend e ative.
Ao ir de um site para outro, passe a sessão incluindo isso na url (use
&
se você já usa?
um$_GET
parâmetro)fonte