你好,
我正在尝试将 Discourse 嵌入到 MediaWiki 实例中,但遇到一个奇怪的问题。
当我将 Wiki 页面链接到现有的 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">
随后,由于 iframe 中的 meta http-equiv="refresh",在 30 秒后 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">
此时控制台报错:
在 DOMWindow 上执行 'postMessage' 失败:提供的目标源 ('https://forum.dev.tripleperformance.fr') 与接收窗口的源 ('https://wiki.dev.tripleperformance.fr') 不匹配。
这可能是因为 data-embedded 属性中的 referer 现在指向自身,而非父页面(考虑到刷新操作是由自身发起的,这或许符合预期)。
备注:我在一台因 Docker 等环境而运行较慢的开发机器上操作。很有可能是遇到了竞态条件或其他类似问题……?