Ошибка встраивания Discourse (путаница с referer)

Здравствуйте,

Я занимаюсь встраиванием Discourse в экземпляр MediaWiki и столкнулся с необычной проблемой.

Когда я связываю страницу вики с существующей темой Discourse, всё работает как по маслу:

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

Однако при попытке создать тему происходит сбой:

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

Iframe загружается первый раз со следующим содержимым:

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

Затем, через 30 секунд (из-за meta http-equiv="refresh" внутри iframe), он перезагружается со следующим содержимым:

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

На этом этапе в консоли появляется ошибка:

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').

Вероятно, это связано с тем, что referer в атрибуте data-embedded теперь указывает на самого себя, а не на родительскую страницу (что, возможно, ожидаемо, так как инициатором обновления является сам iframe).

Примечание: Я работаю на медленной машине для разработки из-за Docker и других факторов. Возможно, у меня возникает состояние гонки или что-то подобное…?

На всякий случай: я пытался создать пост на форуме со ссылкой на страницу вики, и всё сработало (вставка отображается корректно). Также я успешно выполнил curl запрос к этому URL изнутри контейнера. Не понимаю, почему новая тема не создаётся сразу…

Привет, Бертран!
Надеюсь, к настоящему моменту эта проблема уже решена, но если нет, попробуйте код из ветки test-passed. В ней содержится исправление, внесённое сегодня для проблемы со схожими симптомами.

Указанная проблема была введена в код ПОСЛЕ 25 августа, когда вы сообщили об этом, поэтому маловероятно, что это точно та же самая проблема.
Тем не менее, если проблема для вас остаётся нерешённой, стоит попробовать этот вариант.

Всего доброго!

Привет, Леонардо,

Спасибо за это. Я только что попробовал — с не слишком большим успехом. Я не углублялся в это, так как такой тип интеграции не подходит для нашей платформы (я предпочитаю, чтобы тема создавалась по требованию с помощью небольшого фрагмента кода, а не для каждой страницы, которая есть на нашей платформе).

Жаль это слышать, но попробовать стоило :slight_smile:
Всего хорошего!