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.