Cookie che non funzionano con i sottodomini


11

Abbiamo un sito principale all'indirizzo example.com. Loggarsi example.com/adminfunziona bene lì.

Ma su un sito di test su test.example.com/adminNon riesco ad accedere all'amministratore senza prima aver eliminato tutti i example.comcookie. Quindi posso accedere, ma non appena accedo al example.com/adminmio prossimo clic sul server di prova mi riporta alla pagina di accesso.

Non so se ciò influisca sugli accessi dei clienti.

Esiste una configurazione nel sito principale o nel sito di test che potrebbe risolvere questo problema?

Risposte:


14
  1. Nel menu Amministratore, selezionare Sistema> Configurazione. Quindi nel riquadro a sinistra, in Generale, fai clic su Web.
  2. Espandi la sezione Gestione dei cookie di sessione

Nel example.comnegozio, imposta quanto segue:

  1. Imposta il dominio dei cookie su example.com (di solito questa impostazione sarebbe .example.com con un punto davanti, potresti provarlo senza in questo caso).

Nel test.example.comnegozio, imposta quanto segue:

  1. Impostare il dominio Cookie su .test.example.com nell'ambiente di test. (il "." davanti al dominio dovrebbe andare bene qui)

2
Solo una nota, passaggio 3 sulla parte .anteriore del dominio, è importante!
B00MER,

Ciao Anna. Il dominio dei cookie deve essere impostato su ".example.com" nell'amministratore example.com, test.example.comnell'amministratore o in entrambi?
Buttle Butkus,

Lo imposterei come configurazione predefinita (che è il tuo admin di esempio.com credo). Quindi questo significa .example.com per tutti gli ambiti.
Anna Völkl,

@ AnnaVölkl Non sono sicuro qui. Capisci che ho due installazioni magento completamente separate su due macchine diverse, giusto? Uno usa example.com, l'altro test.example.com. Entrambi hanno i loro amministratori. Ma mi stai solo dicendo di impostare un dominio per uno degli amministratori. Stai dicendo che dovrei lasciare l'altro vuoto?
Buttle Butkus,

Ah, capisco. In effetti non sapevo che si tratta di 2 installazioni separate. Il negozio principale funziona con o senza www-domain? È possibile impostare il dominio dei cookie sul test su test.example.come nel negozio principale www.example.comper evitare la sovrapposizione dei cookie.
Anna Völkl,

9

Anna fa alcuni punti positivi e la sua risposta funzionerà per molte persone, ma non per me, quindi sto postando la mia risposta. Forse il mio problema era molto più fondamentale di quello a cui si rivolge.

La mia soluzione era cambiare il dominio del mio sito da example.coma www.example.com. In effetti, la mia ricerca su Internet suggerisce che i motivi per cui siti come Amazon, Google, Ebay e tutte le altre principali destinazioni Web utilizzano il wwwprefisso potrebbero essere in gran parte dovuti al modo in cui funzionano i cookie. Forse no.

Il modo predefinito in cui funziona un cookie è che si applica a tutti i sottodomini. Quindi, se example.comti invia un cookie, allora visiti mail.example.com, smile.example.comoppure devsite.example.com, il tuo browser invierà quel cookie a quei siti e quei siti proveranno a utilizzare il cookie. Ma non saranno in grado di trovare la tua sessione se non usano tutti una cartella di sessione comune. E anche allora, probabilmente avresti problemi a causa di diverse configurazioni del database, diverse strutture applicative, ecc.

La modifica ha comportato la creazione di 301 reindirizzamenti nel mio file htaccess di root, la modifica degli URL sicuri / non sicuri nella core_config_datatabella del database magento , la modifica del sito ServerNamein Apache VirtualHostse l'aggiornamento delle impostazioni DNS / nameserver. Ma ne è valsa la pena.

Creando il mio sito principale www.example.com, i suoi cookie ora si applicherebbero solo ai loro sottodomini, come mail.www.example.com(e non abbiamo tali sottodomini). I browser client che ricevono il www.example.comcookie non lo inviano devsite.example.come il problema è stato risolto. Inoltre è davvero bello avere un wwwdavanti al nostro nome di dominio.


1
Vorrei poter dare più voti positivi per questa risposta. Sto cercando una soluzione da mesi e tutti continuano a dire di Cookie Path e Cookie Domain, ma ciò non risolverà il problema se non si utilizza www. Grazie!!
Bruno Monteiro,

Abbiamo già www nel dominio dei cookie, ma non riesce ancora ...
Black

Cosa non riesce ancora?
Buttle Butkus,

3

Puoi semplicemente cambiare il nome del cookie adminhtml per i sottodomini.

Due modifiche al file app/code/core/Mage/Core/Controller/Varien/Action.php.

Nelle preDispatchrighe di cambio funzione

/** @var $session Mage_Core_Model_Session */
$session = Mage::getSingleton('core/session', array('name' => $this->_sessionNamespace))->start();

per

$namespace = $this->_sessionNamespace.($_SERVER['SERVER_NAME']=='subdomain.example.com'?'_subdomain':'');
/** @var $session Mage_Core_Model_Session */
$session = Mage::getSingleton('core/session', array('name' => $namespace))->start();

In setRedirectWithCookieCheckcambio di funzione

/** @var $session Mage_Core_Model_Session */
session = Mage::getSingleton('core/session', array('name' => $this->_sessionNamespace));

per

$namespace = $this->_sessionNamespace.($_SERVER['SERVER_NAME']=='subdomain.example.com'?'_subdomain':'');
/** @var $session Mage_Core_Model_Session */
$session = Mage::getSingleton('core/session', array('name' => $namespace));

E dopo quella ricerca di testo

Mage::getSingleton('core/session', array('name' => 'adminhtml'));

in tutti i file e sostituirlo con

Mage::getSingleton('core/session', array('name' => 'adminhtml'.($_SERVER['SERVER_NAME']=='subdomain.example.com'?'_subdomain':'')));

se si verificassero delle occorrenze.


1
Puoi spiegare a parole come il tuo codice altera le interazioni dei cookie client e server per isolare le sessioni?
Buttle Butkus,

@ButtleButkus il problema è che example.com/admin imposta il cookie con il nome adminhtmlper il dominio .example.com. Quando si tenta di autorizzare su test.example.com/admin, si tenta di fare qualcosa con il cookie adminhtmlper .test.example.com. I problemi differiscono nelle impostazioni di Magento. Il problema principale è che non è possibile modificare i cookie del dominio principale dal sottodominio. Il codice sopra riportato consente a Magento di creare cookie adminhtmlper example.com e cookie adminhtml_subdomainper subdomain.example.com, in modo che non si mescolino in alcun modo. Passa subdomaina quello corretto che usi.
maxvgi,

Questo va bene per l'amministrazione. Ma anche il lato frontend dovrebbe cambiare il nome del cookie in questo tipo di soluzione, giusto?
Buttle Butkus,

@ButtleButkus hai ragione. Spiacente, non ho scritto questo perché non ho avuto questo tipo di problema.
maxvgi,

Va bene, probabilmente utile per alcune persone.
Buttle Butkus,

0

Se non riesci ancora ad accedere al tuo frontend (la sessione del cliente non può essere creata) a causa dei problemi con i cookie, sovrascrivi il rispettivo file core

Pre 1.8.x. versioni - app / code / core / Mage / Customer / Model / session.php

e

dalla 1.8.x. versione app / code / core / Mage / Core / Model / Session / Abstract.php

Commenta le righe indicate in questa discussione. Ciò ha risolto il problema con l'accesso del cliente sul frontend nell'archivio versioni pre 1.8.x.

/magento//a/34057/695

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.