你好!我们遇到了“嵌入错误”,iframe 显示:
嵌入错误
Referer(来源):
来源未发送,或与以下主机不匹配:
尽管域名完全相同,控制台却显示:
Uncaught SyntaxError: Failed to execute 'postMessage' on 'Window': Invalid target origin '' in a call to 'postMessage'.
_embed-application-3723be59920e64ecda9d66b1e7c4c55378fb9dadfa7f422febd4f1b346c1aa05.js:6 Uncaught DOMException: Failed to execute 'postMessage' on 'Window': Invalid target origin '' in a call to 'postMessage'.
at e (https://sjc1.discourse-cdn.com/business5/brotli_asset/embed-application-3723be59920e64ecda9d66b1e7c4c55378fb9dadfa7f422febd4f1b346c1aa05.js:1:42)
at window.onload (https://sjc1.discourse-cdn.com/business5/brotli_asset/embed-application-3723be59920e64ecda9d66b1e7c4c55378fb9dadfa7f422febd4f1b346c1aa05.js:1:470)
我们使用的是“替代配置”,因此 已解决的议题 对我们帮助不大。
(替代配置)链接到现有议题
有些人不希望 Discourse 在其论坛上自动创建议题。他们希望自行创建议题,然后只需告知嵌入代码要关联哪个议题。你可以通过略微修改嵌入代码来实现:
<div id='discourse-comments'></div> <script type="text/javascript"> DiscourseEmbed = { discourseUrl: 'http://discourse.example.com/', topicId: 12345 }; (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>这里唯一的区别是我们用 Discourse 中某个议题的 ID 替换了
discourseEmbedUrl。如果你这样做,将不会创建新议题,并会自动显示该议题的评论。
来源:Embed Discourse comments on another website via Javascript
我们是否有简便的方法来调试此问题?它从哪里获取 referer,为什么可能是空的?
这是一个已知或常见的问题吗?是否可以在出错时隐藏 iframe 或其内容?
点击跳转到报错的脚本位置,似乎无法在 #data-embedded 元素中为 postMessage 找到 referer。