Sto usando un forum Discourse come sezione commenti per il mio blog, che si trova su un dominio diverso.
Sto cercando di utilizzare l’embed dell’app completa di Discourse, ma gli utenti non possono accedere, rispondere o interagire in alcun modo dall’embed.
Quando qualcuno prova a rispondere, viene reindirizzato alla pagina di accesso, anche se è già loggato.
Effettuare l’accesso lì non aiuta.
Sembra che il problema sia legato ai cookie cross-site.
Esiste una soluzione?
C’è una correzione?
Scusa, non sono molto familiare con tutte queste cose relative ai cookie, quindi ho usato l’IA per capire cosa sta succedendo e cercare possibili soluzioni.
Se non ti piace l’IA, puoi fermarti qui.
Ho riportato di seguito ciò che ho ottenuto da loro, ma questo post stesso, inclusa tutta la formattazione, è stato scritto utilizzando la mia Intelligenza Naturale.
Come Gemini ha riassunto il problema.
Gemini:
L’embed “Full App” non riesce a riconoscere le sessioni utente attive quando il forum e il sito utilizzano domini diversi.
Questo accade perché il browser tratta il forum incorporato come un tracciatore di terze parti.
I browser moderni bloccano i cookie di terze parti per impostazione predefinita per proteggere la privacy degli utenti.
I cookie di sessione di Discourse sono impostati su SameSite=Lax.
I browser non inviano i cookie Lax all’interno di un iframe se il dominio padre è diverso.
Poiché i cookie vengono bloccati, il forum non può vedere i dati di accesso dell’utente.
L’embed passa automaticamente alla modalità “Ospite” e apre una nuova scheda quando l’utente tenta di interagire.
Soluzioni ovvie come l’aggiunta del host alle impostazioni di Discourse non funzionano.
L’aggiunta alla whitelist dice solo a Discourse di consentire la connessione; non può sovrascrivere le regole di sicurezza del browser.
Aggiornare la pagina o accedere di nuovo in una nuova scheda non funziona perché il blocco a livello di browser rimane attivo per l’iframe.
L’embed rimane essenzialmente intrappolato in una sandbox senza cookie.
Sembra che ci siano modi corretti per farlo, ma Discourse dovrebbe implementarli.
Sì, esistono metodi ufficiali e sicuri, ma il “vecchio modo” (impostare semplicemente un cookie) è morto.
Per mantenere un accesso in un iframe oggi, devi utilizzare uno dei seguenti tre standard “ufficiali” dei browser. Quale scegliere dipende interamente da chi deve vedere la sessione di accesso.
1. Il metodo “Barattolo Privato”: CHIPS
Ideale per: Widget di chat, mappe incorporate o moduli di pagamento che devono rimanere loggati solo su questo specifico sito padre.
Come funziona: Imposti un cookie con l’attributo Partitioned.
Set-Cookie: session_id=xyz; Secure; SameSite=None; Partitioned;
Il risultato: Il browser crea un “barattolo dei cookie” unico per il tuo iframe, associato a (Tuo Dominio + Dominio della Pagina Padre).
Pro: Funziona automaticamente senza chiedere il permesso all’utente.
Contro: La sessione non è condivisa. Se l’utente visita il tuo sito direttamente in una nuova scheda, non sarà loggato lì. È loggato solo all’interno di quel contesto di embed specifico.
2. Il metodo “Sessione Condivisa”: Storage Access API (SAA)
Ideale per: Quando hai bisogno che l’iframe veda la stessa sessione di accesso della scheda principale dell’utente (ad esempio, un widget “Commenta come [Utente]”).
Come funziona: L’iframe non può leggere i propri cookie inizialmente. Deve chiamare un’API JavaScript specifica per richiedere l’accesso:
document.requestStorageAccess().then(() => {
// Ora puoi leggere i tuoi cookie cross-site!
});
Il problema: Questo richiede un gesto dell’utente (come un clic). In genere devi prima renderizzare un pulsante “Clicca per connetterti”. Una volta cliccato, il browser potrebbe chiedere all’utente (“Consenti a [iframe] di usare i cookie?”).
Pro: Concede l’accesso ai tuoi “veri” cookie globali.
Contro: Alta frizione; richiede interazione dell’utente/popup.
3. Il metodo “Passaggio del Token” (Il più comune)
Ideale per: Applicazioni SaaS che incorporano i propri strumenti nei dashboard dei clienti.
Come funziona: Non fai affidamento sui cookie dell’iframe.
La pagina padre gestisce l’accesso (o ha già il token).
La pagina padre passa il token di autenticazione (JWT) all’iframe tramite postMessage.
L’iframe riceve il token e lo memorizza in memoria (o in sessionStorage) per allegarlo alle richieste API.
Pro: Zero dipendenza dalle politiche dei cookie del browser; completamente compatibile tra browser.
Contro: Richiede modifiche al codice sia sulla pagina padre che sul sito dell’iframe.
Raccomandazione Riassuntiva
Se hai bisogno di…
Usa…
Accesso isolato (Lo stato del widget non deve corrispondere al sito principale)
CHIPS (Cookie Partitioned)
Accesso globale (L’utente è già loggato sul tuo sito altrove)
Storage Access API
Controllo (Possiedi sia il sito padre che l’iframe)
Passaggio del Token (postMessage)
Lilly
(Lillian )
5 Maggio 2026, 12:01am
2
Dev-in-the-BM:
Sto cercando di utilizzare l’embed dell’app completa di Discourse, ma gli utenti non possono accedere, rispondere o interagire in alcun modo dall’embed.
Quando qualcuno tenta di rispondere, viene reindirizzato alla pagina di accesso, anche se è già loggato.
Il tuo Discourse è aggiornato? Assicurati di aggiornare all’ultima versione. Io non ho problemi a rispondere quando sono loggato nel forum corretto.
Rispondere come anonimo apre una nuova scheda per il login, come spiegato qui:
Falco
(Falco)
5 Maggio 2026, 12:35am
3
Accedi alla console di Rails e imposta il cookie del sito sullo stesso valore su “Nessuno”.
cd /var/discourse
./launcher enter app
rails c
SiteSetting.same_site_cookies = "None"
Sì.
Nello stesso dominio o tra siti diversi?
Ci ho pensato, ma è molto insicuro, ovviamente non è una buona idea.
Solo una nota: la persona che ha suggerito quella soluzione è stata proprio quella che ha contribuito a realizzare la funzione .
RGJ
(Richard - Communiteq)
5 Maggio 2026, 7:46am
7
L’incorporamento cross-domain non è sempre la scelta migliore, ma dai.