Impostazione cookie in rotaie opzione domain con
-
20-09-2019 - |
Domanda
Sto cercando di impostare un cookie in un dominio e accedere da un altro. È possibile?
Ecco quello che sto facendo nella mia app:
In un controller, l'azione di prova si accede tramite questo URL:
def test
cookies[:foo] = {
:value => 'something',
:domain => 'myapp.heroku.com'
}
end
In stesso controller, l'azione test2 si accede tramite questo URL:
http://myapp.heroku.com/account/test2
def test2
puts "foo=#{cookies[:foo]}"
end
, ma il valore del cookie [: foo] è sempre vuota. E 'possibile accedere il cookie di dominio heroku.com. Ho pensato che l'impostazione del: opzione domain permetterebbe questo.
Grazie.
Soluzione
L'opzione: dominio (e l'impostazione del dominio sui cookie in generale) funziona veramente solo attraverso sottodomini. vale a dire per app1.mysite.com e app2.mysite.com - si potrebbe impostare il dominio cookie per .miosito.com e lo hanno condiviso tra i sub-domini
.Questo è solo il modo i cookie sono progettati per lavorare. myapp.com e myapp.heroku.com sono domini separati, non sotto-domini, in modo da tentare di impostare il dominio in questo modo non è andare a lavorare.
Ci sono alcuni modi per ottenere veri biscotti cross-domain - ma sono piuttosto coinvolto.
Altri suggerimenti
Non si può fare questo per un dominio diverso, ma si può fare per i sottodomini. Così, per esempio,
un'applicazione in esecuzione su example.com
dominio può impostare un cookie per subdomain.example.com
ma non per exampleapp.com
.
Devo aggiungere, se fosse possibile impostare i cookie per altri domini, arbitrarie, ci sarebbero enormi problemi di sicurezza / privacy.
È possibile impostare gli stessi biscotti per tutti i domini nel modo seguente in environment.rb:
ActionController::CgiRequest::DEFAULT_SESSION_OPTIONS[:session_domain => '.mydomain.com']
qui per la documentazione.
Si consiglia di controllare le http://coderack.org/users/ ahamid / middleware / 142-session-iniettore