# Incrustación está ROTA en 3.0.4 (estable)

**URL:** https://meta.discourse.org/t/embedding-is-broken-in-3-0-4-stable/268559
**Category:** Bug
**Created:** [16 Junio, 2023 00:34 UTC](https://meta.discourse.org/t/embedding-is-broken-in-3-0-4-stable/268559 "2023-06-16T00:34:48Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![fabsh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fabsh/32/311728_2.png) [@fabsh](https://meta.discourse.org/u/fabsh)
#### Post date: [16 Junio, 2023 00:34 UTC](https://meta.discourse.org/t/embedding-is-broken-in-3-0-4-stable/268559/1 "2023-06-16T00:34:48Z")

</div>

Tengo la sospecha de que este cambio

> **[Canonical url not being used for topic embeddings](https://github.com/discourse/discourse/security/advisories/GHSA-p2jx-m2j5-hqh4)**
>
> \### Impact
> Multiple duplicate topics could be created if topic embedding is enabled.
> 
> \### Patches
> The issue is patched in the latest stable, beta and tests-passed version of Discourse.
> 
> \### W...

rompió la forma en que uso la incrustación en mi sitio web. ¿Alguien puede indicarme qué se cambió exactamente?

Uso Discourse para crear temas para las publicaciones de mi blog (como sistema de comentarios). Mi sitio web está dividido en dos partes para dos idiomas, por lo que uso dos hosts para filtrar las publicaciones en inglés (/blog/somepost) y alemán (/de/blog/somepost) en diferentes categorías del foro.

 ![screenshot-forum.fab.industries-2023.06.16-02_30_47](https://global.discourse-cdn.com/meta/original/4X/3/2/f/32f5618765c222e5a4dc236e3304e4acf0ad1c95.png)

Las publicaciones del lado alemán del sitio web ya no se incrustan desde que se actualizó mi Discourse. Supongo que tiene algo que ver con el parche anterior.

Cualquier ayuda para intentar resolver esto sería muy apreciada.

---

<div class="post-metadata">

### Author: ![fabsh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fabsh/32/311728_2.png) [@fabsh](https://meta.discourse.org/u/fabsh)
#### Post date: [16 Junio, 2023 01:00 UTC](https://meta.discourse.org/t/embedding-is-broken-in-3-0-4-stable/268559/2 "2023-06-16T01:00:50Z")

</div>

Por otro lado, podría ser lo que sea que sea este problema:

> [@Discourse Comments stuck on "Loading..."](https://meta.discourse.org/t/discourse-comments-stuck-on-loading/267861):
>
> Hello, Over the past few days, in our Discourse, we have noticed that the “View Full Post” button remains at “Loading…” when it’s clicked: [image] Additionally, new Discourse comments have stopped showing from our embed from within our Drupal website. We have been successfully using the JavaScript embed instructions from below for years: However, for some reason this seems to have stopped working lately. I believe the last working post was around the 1st of this month. Older posts do displ…

Ciertamente me aparecen esas DOMExceptions. De nuevo, ¡cualquier ayuda sería muy apreciada!

---

<div class="post-metadata">

### Author: ![Lilly](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/lilly/32/575047_2.png) [@Lilly](https://meta.discourse.org/u/Lilly)
#### Post date: [16 Junio, 2023 01:54 UTC](https://meta.discourse.org/t/embedding-is-broken-in-3-0-4-stable/268559/3 "2023-06-16T01:54:07Z")

</div>

Sí, estaría revisando las políticas y configuraciones de seguridad de tu foro y del sitio web incrustado. La captura de pantalla se ve bien. ¿Qué script estás usando y qué hay de tus otras configuraciones de incrustación? ¿Has hecho algún cambio reciente allí?

Mi foro utiliza esta función de publicación incrustada varias veces al día y funciona muy bien en este momento, así que sé que no está rota. Estamos usando la última beta y estamos alojados, así que confío en la configuración.

---

<div class="post-metadata">

### Author: ![fabsh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fabsh/32/311728_2.png) [@fabsh](https://meta.discourse.org/u/fabsh)
#### Post date: [16 Junio, 2023 07:26 UTC](https://meta.discourse.org/t/embedding-is-broken-in-3-0-4-stable/268559/5 "2023-06-16T07:26:18Z")

</div>

> [@Lilly](#):
>
> Sí, estaría revisando las políticas y configuraciones de seguridad de tu foro y del sitio web incrustado. La captura de pantalla se ve bien. ¿Qué script estás usando y qué hay de tus otras configuraciones de incrustación? ¿Has hecho algún cambio reciente allí?

¡Hola, gracias por intentar ayudar!

No tengo control sobre ninguna política de seguridad, ya que ambos sitios son alojados por proveedores de hosting. Dudo que ellos hayan causado esto. Pero lo investigaré con mi proveedor de Discourse.

Uso este script en el blog (es un motor de sitio estático llamado Hugo):

```plaintext
<script type="text/javascript">
  DiscourseEmbed = { discourseUrl: 'https://forum.fab.industries/',
                     discourseEmbedUrl: '{{ .Permalink }}' };

  (function() {
    var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
    d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
    (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
  })();
</script>

```

No he cambiado nada de eso desde que lo integré por primera vez hace unos meses.

Todo lo que _sí_ cambié fue un poco de CSS personalizado que añadí al tema del foro. Lo revertiré hoy y veré si eso soluciona el problema.

---

<div class="post-metadata">

### Author: ![fabsh](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/fabsh/32/311728_2.png) [@fabsh](https://meta.discourse.org/u/fabsh)
#### Post date: [16 Junio, 2023 07:52 UTC](https://meta.discourse.org/t/embedding-is-broken-in-3-0-4-stable/268559/6 "2023-06-16T07:52:29Z")

</div>

De acuerdo. Revertir el CSS no hizo nada. De todos modos, era una posibilidad remota.

Ahora también pude confirmar que la incrustación está rota en general. El lado en inglés del blog también dejó de funcionar. Las nuevas páginas se quedan atascadas en “Cargando discusión…”.

Ahora estoy bastante seguro de que esto se rompió cuando mi proveedor actualizó mi foro a 3.0.4, pero no sé desde qué versión me actualizaron. Así que todavía sospecho de este parche de alguna manera:

> <https://github.com/discourse/discourse/commit/ccb345bd88024edf79fc91f90f02c5aac897a8d4>
>
> This commit implements many changes to topic and comments embedding. It
> depreca…tes the class\_name field from EmbeddableHost and suggests using
> the className parameter. discourse\_username parameter has been
> deprecated and it will fetch it from embedded site from the author or
> discourse-username meta.
> 
> See the updated code sample from Admin \> Customize \> Embedding page.
> 
> \* FEATURE: Add className parameter for Discourse embed
> 
> \* DEV: Hide class\_name from EmbeddableHost
> 
> \* DEV: Deprecate class\_name field of EmbeddableHost
> 
> \* FEATURE: Use either author or discourse-username meta tag
> 
> \* DEV: Deprecate discourse\_username parameter
> 
> \* DEV: Improve embed code sample

Creo que el hecho de que el navegador esté lanzando estos errores relacionados con el DOM no es una coincidencia:

 ![dom-error](https://global.discourse-cdn.com/meta/original/4X/d/4/f/d4fb83ef27b9611ab1729986ea543100adaa5c2a.png)

Desactivar CSP en la configuración de administración no parece solucionarlo.

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [16 Junio, 2023 09:55 UTC](https://meta.discourse.org/t/embedding-is-broken-in-3-0-4-stable/268559/7 "2023-06-16T09:55:33Z")

</div>

Así que main tiene [esto](https://github.com/discourse/discourse/blame/main/lib/topic_retriever.rb#LL49C5-L49C96)

```
TopicEmbed.import_remote(@embed_url, user: User.find_by(username_lower: username.downcase))

```

y stable tiene [esto](https://github.com/discourse/discourse/blame/stable/lib/topic_retriever.rb#L53)

```
TopicEmbed.import_remote(user, @embed_url)

```

Nota el orden de los parámetros.

Ahora el backport del parche de seguridad [cambió la firma de la función en stable](https://github.com/discourse/discourse/commit/5e3106387feb6de59d749202649971fb3c36ed41#diff-a9aa56fcefb13804a057905bdd06a402290431de865469884df64a9585b4206eL206) al nuevo orden de parámetros, así que

`def self.import_remote(import_user, url, opts = nil)`

se convirtió en

`def self.import_remote(url, opts = nil)`

y ahora el parámetro url recibe un objeto User.

Cambiar la llamada a la función resuelve el problema

```plaintext
diff --git a/lib/topic_retriever.rb b/lib/topic_retriever.rb
index b798df6cd7..6186ce5868 100644
--- a/lib/topic_retriever.rb
+++ b/lib/topic_retriever.rb
@@ -50,6 +50,6 @@ class TopicRetriever
     user = User.where(username_lower: username.downcase).first
     return if user.blank?

- TopicEmbed.import_remote(user, @embed_url)
+ TopicEmbed.import_remote(@embed_url, user: user)
   end
 end

```

@blake

---

<div class="post-metadata">

### Author: ![RGJ](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/rgj/32/523185_2.png) [@RGJ](https://meta.discourse.org/u/RGJ)
#### Post date: [19 Junio, 2023 06:50 UTC](https://meta.discourse.org/t/embedding-is-broken-in-3-0-4-stable/268559/8 "2023-06-19T06:50:19Z")

</div>

He enviado una PR que soluciona este problema [FIX broken topic embedding because of incomplete security patch (#22088) by communiteq · Pull Request #22184 · discourse/discourse · GitHub](https://github.com/discourse/discourse/pull/22184)

---

<div class="post-metadata">

### Author: ![pmusaraj](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/pmusaraj/32/119489_2.png) [@pmusaraj](https://meta.discourse.org/u/pmusaraj)
#### Post date: [19 Junio, 2023 18:52 UTC](https://meta.discourse.org/t/embedding-is-broken-in-3-0-4-stable/268559/12 "2023-06-19T18:52:03Z")

</div>

Gracias @RGJ por la corrección, esa PR ya se fusionó.

---

<div class="post-metadata">

### Author: ![sam](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/sam/32/102149_2.png) [@sam](https://meta.discourse.org/u/sam)
#### Post date: [19 Junio, 2023 21:40 UTC](https://meta.discourse.org/t/embedding-is-broken-in-3-0-4-stable/268559/13 "2023-06-19T21:40:50Z")

</div>


