# Impossibile far funzionare l'embedding

**URL:** <https://meta.discourse.org/t/cannot-get-embedding-to-work/171022>\
**Category:** Product Support\
**Created:** [23 Novembre 2020, 3:16pm UTC](https://meta.discourse.org/t/cannot-get-embedding-to-work/171022 "2020-11-23T15:16:53Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![wilson29thid](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/wilson29thid/32/173700_2.png) [@wilson29thid](https://meta.discourse.org/u/wilson29thid)\
**Post date:** [23 Novembre 2020, 3:16pm UTC](https://meta.discourse.org/t/cannot-get-embedding-to-work/171022/1 "2020-11-23T15:16:53Z")

</div>

Ciao, sto cercando di incorporare i commenti di Discourse sul mio sito web seguendo [la guida all’incorporamento](https://meta.discourse.org/t/embedding-discourse-comments-via-javascript/31963), ma mi sono imbattuto in un muro ☹

## Sintomi

Ho provato su Firefox e Chrome. In entrambi i casi, viene caricato l’iframe di Discourse con il messaggio “Caricamento discussione…”, ma si blocca lì, con errori JavaScript ricorrenti nella console per sviluppatori.

Su Firefox, ricevo un errore relativo a X-Frame-Options:

> `È stato rilevato un header X-Frame-Options non valido durante il caricamento di “https://discourse.29th.local/embed/comments?embed_url=https%3A%2F%2Fpersonnel.29th.local%2F%23enlistments%2F11927”: “ALLOWALL” non è una direttiva valida.`

Seguito da un errore DOMException in `embed-application.js:7`:

> Uncaught DOMException: È stata specificata una stringa non valida o illegale

Questi due errori si ripetono ogni 30 secondi circa. Non ci sono richieste fallite nella scheda di rete.

Su Chrome, non ricevo l’errore X-Frame-Options. Dopo alcuni secondi, ottengo un errore relativo all’origine di destinazione che non corrisponde all’origine della finestra destinataria:

> `Impossibile eseguire 'postMessage' su 'DOMWindow': l'origine di destinazione fornita ('https://discourse.29th.local') non corrisponde all'origine della finestra destinataria ('https://personnel.29th.local').`

Ho visto molti argomenti su meta riguardanti questo errore e ho provato tutti i passaggi di risoluzione dei problemi, senza successo.

## La mia configurazione

Ho seguito la [guida all’installazione di Discourse per Mac](https://meta.discourse.org/t/beginners-guide-to-install-discourse-on-macos-for-development/15772) con una leggera eccezione: invece di installare postgres, redis e mailcatcher globalmente sul mio laptop, li ho eseguiti in container Docker, con le porte esposte pubblicamente. Discourse non sa che sono in esecuzione in container Docker invece che su hardware dedicato. **Rails/Discourse è installato globalmente e non è in esecuzione in un container Docker.**

Completamente separatamente, la mia applicazione web personalizzata è in esecuzione in uno stack Docker Compose. Parte di quello stack include un server nginx che instrada `personnel.29th.local` al container upstream appropriato e `discourse.29th.local` a `host.docker.internal:3000` (questo è l’hostname magico che i container Docker possono utilizzare per raggiungere la `localhost` dell’host).

(Come accenno di seguito, ho rimosso il livello nginx dall’equazione e ho ottenuto lo stesso errore)

Un possibile problema qui è che la mia app web è una single page application JavaScript. La pagina in cui vengono incorporati i commenti di Discourse è `https://personnel.29th.local/#enlistments/1234` e non c’è rendering lato server. Se questo fosse un problema, mi aspetterei un errore con il crawler, nel qual punto mi accontenterei che Discourse si limitasse a creare un link alla mia app invece di scansionarla. Ma gli errori che mostra non sembrano correlati a fallimenti di scansione.

## Risoluzione dei problemi

Ho impostato l’host incorporabile in _Admin \> Personalizza \> Incorporamento_ su `personnel.29th.local`. All’inizio, il codice di esempio per l’incorporamento mostrava `http://localhost:3000/` per `discourseUrl`, quindi ho avviato `rails console` ed eseguito:

```ruby
SiteSetting.force_hostname = "discourse.29th.local"
SiteSetting.port = 443

```

E ho attivato “forza https” nella dashboard di amministrazione. Questo ha corretto l’URL nel codice di esempio per l’incorporamento.

 ![screenshot della pagina di incorporamento della dashboard di amministrazione](https://global.discourse-cdn.com/meta/original/3X/b/5/b5a0a8f386bcc5a24e28a78e167aa250ee6870c1.png)

Ho anche aggiunto `https://personnel.29th.local` come dominio CORS nella sezione `cors origins` delle impostazioni.

Ora sto avviando Discourse con il seguente comando:

```bash
DISCOURSE_DEV_HOSTS=discourse.29th.local,host.docker.internal DISCOURSE_ENABLE_CORS=true bundle exec rails server

```

Ho anche provato a disabilitare la Content Security Policy nella dashboard delle impostazioni.

Ho controllato su `https://discourse.29th.local/logs/` ma non ho visto errori e nulla riguardo a Sidekiq.

A proposito di Sidekiq, ho un messaggio sulla dashboard di amministrazione sugli aggiornamenti:

> Non è stata eseguita una verifica degli aggiornamenti. Assicurati che Sidekiq sia in esecuzione.

Quindi ho eseguito `Sidekiq.redis { |r| puts r.flushall }` nella console di rails e ho ottenuto `OK`, ho riavviato il server rails e non ci sono state modifiche al messaggio né al problema complessivo. Ho dato un’occhiata alla cache di redis e non ho visto nulla relativo a questa pagina.

Ho anche tentato di semplificare le cose rimuovendo il livello nginx dall’equazione: ripristinando `SiteSetting.force_hostname` e `SiteSetting.port` a `nil`, disattivando force https, accedendo alla mia app web e a Discourse tramite `localhost`, e aggiungendo la mia app web agli host incorporabili e ai nomi host CORS di Discourse (`http://localhost:8080`), ma ho ottenuto lo stesso errore, solo con host diversi:

> `Impossibile eseguire 'postMessage' su 'DOMWindow': l'origine di destinazione fornita ('http://localhost:3000') non corrisponde all'origine della finestra destinataria ('http://localhost:8080').`

Sto eseguendo la versione `2.6.0.beta6 ( 60bc38e6a8 )`, che ho ottenuto clonando il ramo `master` come indicato nella guida all’installazione di Discourse per Mac un paio di settimane fa ed eseguendo `git pull origin master` oggi.

Ho anche rimosso la directory `tmp` e riavviato il server.

Ho anche fatto una passeggiata, urlato contro un cuscino e pianto sotto la mia scrivania.

Spero che questo copra tutti gli aspetti. Spero che qualcuno possa aiutarmi!

---

_[View the full topic](https://meta.discourse.org/t/cannot-get-embedding-to-work/171022)._
