Я искал ответ на эту проблему на форуме и попробовал несколько предложенных вариантов.
Я запускаю публикацию Ghost на Droplet от Digital Ocean, а форум Discourse — на отдельном Droplet от Digital Ocean, так как консенсус на форуме гласит, что не следует устанавливать два приложения на один сервер.
Я хочу, чтобы комментарии Discourse отображались под каждым сообщением, и у меня нет URL-слаг mysite.com/blog. Поэтому я следовал документации, чтобы получить текущий URL сайта и использовать его как URL для встраивания.
Следуя документации здесь: Официальная документация по интеграции
Мне удаётся отобразить фрейм на новых сообщениях. Однако он не загружается и выдаёт следующую ошибку:
Failed to execute 'postMessage' on 'DOMWindow': The target origin provided ('<URL>') does not match the recipient window's origin ('<URL>').
Я подтвердил, что мои настройки HTTPS верны. Мой встроенный URL повторяет учебное пособие, но я попробовал несколько вариантов discourseEmbedUrl в попытке устранить неполадку. Все ссылки на текущий URL статьи вызывают ту же ошибку.
Я также попробовал добавить функцию wait, подумав, что, возможно, фрейм не успел загрузиться, но ошибка остаётся.
Вот мой текущий встроенный код:
<div id='discourse-comments'></div>
<meta name='discourse-username' content='JosephPaul'>
<script type="text/javascript">
DiscourseEmbed = {
discourseUrl: 'https://forum.mysite.com/',
discourseEmbedUrl: '{{url absolute="true"}}',
// className: 'CLASS_NAME',
};
(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>
Буду признателен за любую помощь, так как я исчерпал все опубликованные решения. Мне кажется, что проблема может быть в том, что мой форум и статьи находятся на разных машинах.