כשל הטמעת Discourse (הפניה מעורבבת)

סיכום מבוסס בינה מלאכותית

Bertrand_Gorge reports an issue with embedding Discourse in a Mediawiki instance, where creating a new topic fails due to a referer mismatch error in the iframe reload process Bertrand_Gorge. The problem occurs after a 30-second refresh, where the data-referer meta tag changes from the wiki page to the Discourse embed URL, causing a cross-origin postMessage error Bertrand_Gorge. Although the issue might be related to a race condition or a recent code change, Leonardo suggests trying a fix from the tests-passed branch, though Bertrand_Gorge notes it doesn’t resolve the issue and that they prefer a different integration approach Bertrand_Gorge.

Hello,

I’m in the process of embedding Discourse in a Mediawiki instance, and I seem to have a strange issue with it.

When I link my wiki page to an existing discourse topic, everything works like a charm:

window.DiscourseEmbed = { discourseUrl: 'https://forum.dev.tripleperformance.fr/',|
                          topicId: 18};

But when I try to create the topic it fails:

window.DiscourseEmbed = { discourseUrl: 'https://forum.dev.tripleperformance.fr/',|
                          discourseEmbedUrl = 'https:' + mw.config.get('wgServer') + '/wiki/' + mw.config.get('wgPageName')};

The iframe is loaded a first time with:

<meta id="data-embedded" data-referer="https://wiki.dev.tripleperformance.fr/wiki/Sandbox">

Then, after 30 seconds (caused by the meta http-equiv="refresh" in the iframe), the iframe reloads with:

<meta id="data-embedded" data-referer="https://forum.dev.tripleperformance.fr/embed/comments?embed_url=https%3A%2F%2Fwiki.dev.tripleperformance.fr%2Fwiki%2FSandbox">`

At this point, there’s an error in the console:

Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('https://forum.dev.tripleperformance.fr') does not match the recipient window's origin ('https://wiki.dev.tripleperformance.fr').

That’s probably because the referer in the data-embedded attribute is now self and not the parent page (which might actually be expected since the initiator of the refresh is self).

Note: I’m on a development machine which is slow due to docker and everything. It’s quite possible that I’m in a race condition or something…?

For what it’s worth, I’ve tried to create a post in the forum with a link to a wiki page, and it managed to resolve it (the embed is properly displayed). I also tried to curl the URL from within the container with success. I don’t understand why the new topic is not created right away…

hello Bertrand!
Hopefully this issue is solved for you by now, but if not, you might want to try the code in the test-passed branch, which contains a fix from today for a problem with similar symptoms.

Said problem was introduced in the code AFTER August 25th when you reported this, so it’s unlikely this is the exact same issue.
Still, if this is unresolved for you, you might want to give it a try.

Cheers!

Hello Leonardo,

Thanks for this. I just tried - with not much more success. I did not dig too much into it though, as this type of integration won’t fit our platform (I prefer the topic to be created on demand through a bit of code and not for each page that we have in the platform).

sorry to hear that, but it was worth a try :slight_smile:
Cheers!